0

我在我的项目中使用了delayed_job,直到现在在它工作的控制台中调用rake jobs:work。

但是现在我试图在具体事件之后停止处理作业,并在其他事件之后继续处理。

为了模拟这种行为,我创建了一个脚本 config/initializers/delayed_jobs.rb

puts "START DELAYED JOB PRE"
`script/delayed_job start`
puts "START DELAYED JOB POST"

并且只调用了第一个 puts,服务器陷入了指令中,并且没有显示 web。

如何调用 stop 和 start delay_jobs 以获得正确的行为?

4

2 回答 2

0

您可以将其移动到自己的线程中:

puts "START DELAYED JOB PRE"
Thread.new do
    `script/delayed_job start`
end
puts "START DELAYED JOB POST"
于 2012-11-20T13:29:12.410 回答
0

我建议使用负责让您的工作人员保持正常运行的外部守护程序。我有很好的经验,resque-pool这是专为resque队列设计的。通常,这样的守护进程将允许您通过向主进程发送信号来暂停工作人员。它还使部署重新启动和管理变得非常容易。

于 2012-11-20T14:10:05.240 回答