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
在开发环境中,这可以正常工作,如delay_job日志和缓存日志所证明的。
在分期时,有时是1或2,或者有时没有执行这些作业。通常,执行至少一个,通常是相同的(但并非总是)。如果我在启动后查看delayed_jobs表,我会看到所有4 作业都会写下,然后在2秒后消失。
根据建议,我有
# config/initializers/delayed_job_config.rb
Delayed::Worker.destroy_failed_jobs = false
但是,工作仍在很快删除而不会失败或执行。
如果我在Delayed::PerformableMethod.perform
上插入断点,我才能看到该方法仅在实际执行的作业时才调用,因此问题在此上游。但是,destroy
方法是在perform
之后调用的,所以我不确定发生了什么。
我正在寻找故障排除建议或其他诊断动作。
令人毛骨悚然的:我有一个工人在另一个环境中奔跑,指向同一DB,这与我的登台环境同时运行了工作。这种意外的后果是在环境之间永不共享DB的一个很好的理由。