Как узнать, что происходит с заданиями в очереди, используя delayed_job? - PullRequest
2 голосов
/ 18 сентября 2010

Я запускал 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 ]

4 голосов
/ 30 сентября 2010

Вы можете получить представление о своей очереди delayed_job с помощью модели Delayed :: Job (думаю, ее имя могло измениться в более поздних версиях). Это просто модель ActiveRecord, и вы можете делать все то, что вы делаете с обычной. Найти все, найти с набором failed_at, найти с набором locked_by (в данный момент работает).

Я считаю, что их намного легче читать, если вы сначала их _амуляете: y Delayed::Job.all из консоли.

2 голосов
/ 22 сентября 2010

Вы должны быть осторожны, чтобы установить Delayed::Job.destroy_failed_jobs = false, потому что по умолчанию после 25 попыток работа будет удалена.Затем вы можете увидеть, какие задания не удалось (и сколько времени в поле failed_at).Есть очистка, чтобы очистить их.

Еще одна очередь, на которую стоит обратить внимание, это Resque, которая поставляется с небольшим приложением для управления очередями. Его введение - хорошее чтение.

...