【问题标题】:How do I see what's going on with queued jobs using delayed_job?如何使用delayed_job 查看排队作业的情况?
【发布时间】:2011-04-13 23:24:21
【问题描述】:

我一直在运行 delay_job 并且遇到了一些错误,但现在我不知道作业队列中的内容或它们发生了什么......

我怎样才能弄清楚,以便调试它是否能够执行已放入队列中的内容?

这里是我调用作业的地方(它是 cron 任务的一部分)和它调用的邮件程序:

  class SomeMailJob < Struct.new(:contact, :contact_email) 
   def perform
     OutboundMailer.deliver_campaign_email(contact,contact_email)
   end
 end

#class OutboundMailer < ActionMailer::Base
class OutboundMailer < Postage::Mailer 

  def campaign_email(contact,email)
    subject    email.subject
    recipients contact.email
    from       'Timothy Fong <tim.fong@opshub.com>'
    sent_on    Date.today

    body       :email => email
  end

【问题讨论】:

    标签: ruby-on-rails cron delayed-job


    【解决方案1】:

    您可以通过Delayed::Job 模型深入了解您的delayed_job 队列(我认为它的名称在以后的版本中可能已更改)。它只是一个 ActiveRecord 模型,您可以对普通模型执行所有操作。查找所有,查找设置了failed_at 的,查找设置了locked_by 的(当前正在工作)。

    我发现如果你先 to_yaml 他们更容易阅读:y Delayed::Job.all 从控制台。

    【讨论】:

      【解决方案2】:

      您必须小心设置Delayed::Job.destroy_failed_jobs = false,因为默认情况下,在 25 次尝试后,作业将被删除。然后您可以查看哪些作业失败(以及 failed_at 字段中的时间)。有一个 rake 任务来清理它们。

      另一个值得关注的队列是 Resque,它带有一个用于监控队列的小型管理应用程序。 Its introduction 是一本好书。

      【讨论】:

        猜你喜欢
        • 2017-07-25
        • 1970-01-01
        • 2013-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多