我已经使用 delayed_job 在我的 Rails 应用程序中实现了长时间运行的任务连同 delayed_job_web .我的 delayed_job 配置指示作业尝试一次,并保留失败:
config/initializers/delayed_job.rb:
Delayed::Worker.max_attempts = 1
Delayed::Worker.destroy_failed_jobs = false
我尝试了 2 个自动引发错误的测试作业,以查看失败的行为。我得到的是以下内容:
我的预期是失败的作业计数为 2,但排队/工作/待处理 都为 0。我找不到任何关于确定工作是否入队/工作/待定的文件,甚至是工作之间的区别 和 Pending 是(网络界面将这两个列表描述为“包含当前正在处理的作业”。)
任何人都可以澄清一下吗?
最佳答案
如果你勾选https://github.com/ejschmitt/delayed_job_web/blob/master/lib/delayed_job_web/application/app.rb ,您会看到以下内容(从第 114 行开始):
when :working
'locked_at is not null'
when :failed
'last_error is not null'
when :pending
'attempts = 0'
end
Enqueued 是延迟作业的总数,即
Delayed::Job.count
工作作业是那些已被 delayed_job 进程锁定并且当前正在工作的作业。
失败的是那些有
last_error
的
Pending 是那些从未尝试过的工作。
关于ruby - 了解 delayed_job 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21791348/