简短而简单的问题:
fork { something_that_takes_a_few_seconds_and_doesnt_concern_the_user }
respond_to ...
有没有理由不在rails应用程序中执行此类操作?在PHP中,我们目前依赖于外部排队系统,如beanstalk或亚马逊的SQS,以及异步任务工作者,它将队列中的东西拉出来在后台运行。在许多情况下,简单的fork更适合,具体取决于任务的复杂程度。
答案 0 :(得分:1)
是的,如果您收到的请求太多或者此过程花费的时间比预期的要长,您可以轻松爆炸CPU和内存,Rails应用程序将开始引发内存错误。
对于Rails应用程序有很多死的简单后台工作者解决方案,例如Resque,你可以在使用这样的解决方案而不是分叉时受益匪浅,因为它总会在你的webapp环境中发生,即使是某些东西令人讨厌的是,它将局限于工作者机器(而不是您的应用程序服务器)。
此外,我看到很多人都说,一旦你转向虚拟化词,内存碎片(由于产生并杀死了许多进程)可能会造成损失并让你变慢。