如何获得延迟的作业处理时间?

时间:2011-01-26 20:06:15

标签: ruby-on-rails delayed-job

我正在使用delayed_job运行一些背景作业,我想知道如何重温作业处理的时间

信息显示在服务器上,但我不知道如何保存它以便在我的控制器/视图中使用它

Delayed::Backend::ActiveRecord::Job Load (0.8ms)  SELECT "delayed_jobs".* FROM "delayed_jobs" WHERE ("delayed_jobs"."id" = 83) LIMIT 1
Completed 200 OK in 9ms (Views: 6.8ms | ActiveRecord: 0.8ms)
  AREL (0.4ms)  DELETE FROM "delayed_jobs" WHERE ("delayed_jobs"."id" = 83)

2 个答案:

答案 0 :(得分:2)

由于延迟作业在完成后从数据库中删除,因此最简单的方法是让作业本身在数据库启动时在数据库中创建记录,然后在作业完成时在回调中设置完成的时间。完成。它不够优雅,但很容易使用现有系统实现。

答案 1 :(得分:0)

在DJ 2.1中,作业可以在挂钩之前和之后定义。您可以使用它们来记录数据库中的开始和结束时间。

class ParanoidNewsletterJob < NewsletterJob
  def before(job)
    record_start job
  end

  def after(job)
    record_finish job
  end
...
end