如何使用delayed_job查看排队作业的情况?

时间:2010-09-17 23:34:39

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

我一直在运行delayed_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

2 个答案:

答案 0 :(得分:4)

您可以通过Delayed :: Job模型深入了解您的delayed_job队列(我认为它的名称可能在以后的版本中有所改变)。它只是一个ActiveRecord模型,你可以做你正常做的所有事情。查找全部内容,查找设置为failed_at的内容,找到设置为locked_by的内容(当前正在使用中)。

我发现如果你先从控制台中找到它们,就会更容易阅读:y Delayed::Job.all来自控制台。

答案 1 :(得分:2)

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

要查看的另一个队列是Resque,它附带了一个用于监视队列的小管理应用程序。 Its introduction是一本很好的读物。