【问题标题】:Fork Rails tasks into background job with job control使用作业控制将 Rails 任务分叉到后台作业中
【发布时间】:2012-02-17 17:56:47
【问题描述】:

我已经编写了一个类,该类通过监视已提交作业的表来运行后台作业服务器。运行服务器所需的代码本质上是:

j = JobServer.new
j.run!

我已将它封装在 Rake 任务中进行测试,但现在我想要一种方法来后台运行该作业并提供一个初始化脚本来管理此服务器。我花了一段时间玩daemons gem,但最终得出的结论是,它在关闭后台 proc 时会关闭我的文件描述符。这行不通,因为我的数据库后端是 SQLite3,并且关闭该文件描述符往往会使 Rails 生气。

有没有一种简单的方法来完成我想要做的事情?我要补充一点,我刚刚在另一个用户的答案中看到了delayed_job gem,但如果我能提供帮助,我不想重新编写我的 JobServer 类。

【问题讨论】:

  • 我认为你应该尝试 resque 或 delay_job,可能你的代码没有太大变化。根据我的意见尝试 resque

标签: ruby-on-rails ruby delayed-job


【解决方案1】:

你你用的是Spawn方法

   http://www.ruby-doc.org/core-1.9.3/Process.html#method-c-spawn

可能编写一个不错的小 rake,它可以让您启动/停止/重新启动您的作业服务器。

【讨论】:

  • 我最终用Process::fork 自己编写了逻辑。我开始查看Process::spawn,但我需要从 Rake 分叉的 Rails 环境。感谢您为我指明正确的方向。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 2018-10-28
  • 1970-01-01
  • 2016-12-04
相关资源
最近更新 更多