2

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,所以我不确定发生了什么。

我正在寻找故障排除建议或其他诊断操作。

4

1 回答 1

1

不好意思:我有一个工作人员在另一个环境中运行,指向同一个数据库,该数据库与我的暂存环境同时运行作业。这种意想不到的后果是永远不要在环境之间共享数据库的一个很好的理由。

于 2012-10-31T17:50:52.180 回答