Rails 3.2.8、delayed_job (3.0.3)、delayed_job_active_record (0.3.3)。使用 WEBrick。
我有一个在启动时异步填充缓存的初始化程序:
MyModel.delay.get_lots_of_records
MyModel.delay.get_some_other_records
MyOtherModel.delay.get_tons_of_records
MyOtherModel.delay.get_some_other_records
在开发环境中,这工作正常,delayed_job 日志和缓存日志证明了这一点。
然而,在分段中,有时会执行 1 个或 2 个,或者有时没有执行这些作业。通常至少执行一个,通常是相同的(但不总是)执行。如果我在启动后查看delayed_jobs 表,我会看到所有4个作业都被写入,然后在2 秒后消失。
根据这里的建议,我有
# config/initializers/delayed_job_config.rb
Delayed::Worker.destroy_failed_jobs = false
但是这些作业仍然会很快被删除,而不会失败或执行。
如果我在 处插入断点Delayed::PerformableMethod.perform
,我会看到只有在作业实际执行时才调用该方法,所以问题出在它的上游。不过,该destroy
方法是在 之后调用的perform
,所以我不确定发生了什么。
我正在寻找故障排除建议或其他诊断操作。