所以,我有一个长期运行的 Ruby 进程,它可以做各种各样的事情,这取决于它被告知要做什么(带有二进制消息的 EventMachine TCP 服务器)。现在,我想让某些人能够通过 Web 界面监控、更改、关闭给定进程。我计划为此使用Sinatra.rb,但我愿意接受更好的选择。
我最初的想法是在 a 中运行 Sinatra Web 界面(它基于Rack,适合那些不熟悉 Sinatra 的人)Thread
并让它在后台运行。
但是,我认为如果我这样做可能会影响性能,所以我决定研究IPC能力和 Ruby 的替代实现(resque、内存共享、命名管道等)。
我真的很喜欢 resque 的想法(而且这个名字真的很诙谐),但我不完全确定它是否是我需要的,或者它是否可能是矫枉过正。实际上,我什至不确定如何最好地使用 Sinatra和EventMachine 来实现它(尽管我没有阅读 resque 的完整文档,只是快速浏览并阅读了示例和用例。)。
想到的另一个想法是在内部使用 Sinatra EventMachine::defer
,但这与创建新的本质上不一样Thread
吗?
我从来没有用Fiber
s 做过任何严肃的事情,所以我不知道它们的全部潜力,但它们确实在我脑海中闪过。
那么,哪些(或建议更好的)实践最适合 Ruby PCI。
谢谢