了解delayed_job状态

时间:2014-02-14 23:31:59

标签: ruby delayed-job

我使用delayed_jobdelayed_job_web在我的Rails应用中实现了长时间运行的任务。我的delayed_job配置指示尝试一次作业,并保留失败:

配置/初始化/ delayed_job.rb:

Delayed::Worker.max_attempts = 1
Delayed::Worker.destroy_failed_jobs = false

我尝试了两个自动引发错误的测试作业,以便了解失败的行为方式。我得到的是以下内容:

enter image description here

我的期望是,失败的工作将计为2,但排队 / 工作 / 待定将全部为0。找不到任何关于什么决定作业排队 / 工作 / 待定的文件,甚至工作之间的区别待定是(网络界面将这两个列表描述为“包含当前正在处理的作业”。)

任何人都可以提供一些清晰度吗?

1 个答案:

答案 0 :(得分:3)

如果选中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
  1. 排队的是延迟工作的总数,即Delayed::Job.count

  2. 工作岗位是已被delayed_job流程锁定且目前正在工作的工作。

  3. 那些有last_error

  4. 的人失败了
  5. 等待那些从未尝试过的工作。