我一直在运行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
答案 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是一本很好的读物。