【问题标题】:How to get Delayed job process time?如何获得延迟的工作流程时间?
【发布时间】:2011-02-17 06:40:50
【问题描述】:

我正在使用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)

【问题讨论】:

    标签: ruby-on-rails delayed-job


    【解决方案1】:

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

    【讨论】:

    • 如何将作业 ID 传递给回调函数?我需要delayed_job id 在我创建的新表中。问题是在我调用 Delayed::job.enqueue 之后,delayed_job 对象被返回,所以我不能传递我还没有的东西
    • 你对工作时间戳的想法奏效了,我可以添加更多我需要的数据。
    【解决方案2】:

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

    class ParanoidNewsletterJob < NewsletterJob
      def before(job)
        record_start job
      end
    
      def after(job)
        record_finish job
      end
    ...
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 2013-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多