delayed_job在没有错误的情况下死亡 - 将作业保持在锁定状态

时间:2012-08-06 23:26:10

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

DJ死后,日志文件没有显示任何内容。

正在运行:./script/delayed_job status

给出:pid-file for killed process 1143 found (/appPath/tmp/pids/delayed_job.pid), deleting. delayed_job: no instances running

奇怪的是,如果我使用:./script/delayed_job run它将在前景中完美运行!永远不会死。

尝试了许多版本的delayed_jobmongoid,结果相同。

任何人都知道如何调试?

使用:

rails (3.2.7)

delayed_job_mongoid (2.0.0)

mongoid (3.0.3)

delayed_job (3.0.3)

2 个答案:

答案 0 :(得分:6)

结果delayed_job正在执行导致分段错误的作业,这会终止delayed_job守护程序。

调试后,结果Random.rand()将在守护程序环境中运行时导致可重现的分段错误。这与随机生成器的初始播种和设置有关,显然无法通过daemonize正确处理。

解决方案:Random.new.rand()

答案 1 :(得分:1)

我想知道这个stack overflow DJ log question中的奇怪行为是否可以解释你的行为。答案看起来似乎也是合理的。发生了奇怪的事情。

Pt 2: Permission issues?也可能很好地解决它。这是生产还是开发?它在Dev中有用吗?

PT 3:从DJm的github页面确保您使用的是MongoDB 1.3或更高版本。你是? 第4页:这个? script/rails runner 'Delayed::Backend::Mongoid::Job.create_indexes'

最后,截至今天,DJM在Travis上运行了红色,但有些错误可能会影响到你。我曾经在宝石上做了一次粗制滥造,让我只能在2天后饮用。 http://travis-ci.org/#!/collectiveidea/delayed_job_mongoid/jobs/1962498

如果不是这样,请在Gemfile中抛出pry,从顶部开始向该脚本添加binding.pry并继续工作。