【问题标题】:Understanding delayed_job status了解delayed_job 状态
【发布时间】:2014-03-14 12:31:23
【问题描述】:

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

config/initializers/delayed_job.rb:

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

我尝试了 2 个自动引发错误的测试作业,以了解故障的表现。我得到的是以下内容:

我的预期是 Failed 作业的计数为 2,但 Enqueued / Working / Pending 都为 0。我找不到任何文档说明是什么决定了一个工作是 Enqueued / Working / Pending,甚至是 Working 之间的区别Pending 是(网络界面将这两个列表描述为“包含当前正在处理的作业”。)

谁能提供一些说明?

【问题讨论】:

  • 你是怎么弄到那张桌子的?我找不到监控队列的好方法..

标签: ruby delayed-job


【解决方案1】:

如果您检查 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. Enqueued 将是延迟作业的总数,即Delayed::Job.count

  2. 工作作业是那些已被delayed_job 进程锁定并且当前正在工作的作业。

  3. 失败的是那些有last_error

  4. 待定是那些从未尝试过的作业。

【讨论】:

  • @Abdo- 谢谢,除了工作状态之外,这一切都很有意义。如果作业失败,并且 max_attempts = 1,为什么作业仍会被视为工作/锁定?
  • 我同意你的看法;然而,这就是他们在源代码中的做法。你可以分叉他们的源代码并更新它,如果它困扰你并将你的 gem 拉到你的 Gemfile 中:-)
猜你喜欢
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-26
相关资源
最近更新 更多