ruby-on-rails-3 - Rails Controller ,可以安全地 fork 一个 block 然后返回吗?

标签 ruby-on-rails-3 fork

简短而简单的问题:

fork { something_that_takes_a_few_seconds_and_doesnt_concern_the_user }

respond_to ...

有什么理由不在 Rails 应用程序中做这种事情吗?在 PHP 中,我们目前依赖于外部队列系统,如 beanstalk 或 Amazon 的 SQS,以及一个异步任务 worker ,该任务 worker 将事情从队列中拉出以在后台运行。在许多情况下,一个简单的 fork 会更适合,这取决于任务的复杂性。

最佳答案

是的,如果您收到太多请求或此过程花费的时间比预期的要长,您可以轻松地破坏您的 CPU 和内存,并且 Rails 应用程序将开始引发内存不足错误。

Rails 应用程序有许多死的简单后台 worker 解决方案,例如 Resque ,并且您可以在使用这样的解决方案而不是 fork 中受益匪浅,因为它总是会发生在您的 webapp 环境之外,即使发生了一些令人讨厌的事情,它也会仅限于工作机器(而不是您的应用程序服务器)。

此外,我看到很多人说,一旦你转向虚拟化词,内存碎片(由于产生和杀死许多进程)可能会造成损失并使你走得更慢。

关于ruby-on-rails-3 - Rails Controller ,可以安全地 fork 一个 block 然后返回吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3966269/

相关文章:

ruby-on-rails - 向 Rails 中的 Controller 添加新 View

创建多个子进程并运行execvp

c - fork()之后为什么子进程不执行?它永远不会涉及 child 的代码部分。

c - 正在运行的函数暂停父函数

java - 你在多大程度上引用项目分支中的作者?

android - 如何在 ruby​​ on rails 中使用 json 获取启用 raw() 函数的内容

每次ajax请求rails app时都会发送javascript

ruby-on-rails-3 - Resque with Rails 3 + Heroku + RedisToGo 给出 Postgresql 错误

ruby-on-rails-3 - 将图像链接到外部 url

c - 在 fork() 之后寻求关于 'file descriptor' 的简单描述