2010-09-17 20 views
2

J'ai couru delayed_job et avais quelques erreurs, mais maintenant je ne sais pas ce qui est assis dans la file d'attente de travail ou ce qui se passe avec eux ....Comment puis-je voir ce qui se passe avec les tâches en attente en utilisant delayed_job?

Comment puis-je comprendre cela afin que je puisse déboguer s'il est capable d'exécuter ce qui a été mis dans la file d'attente?

est ici où j'appelle le travail (il fait partie d'une tâche cron) et le logiciel de messagerie, il appelle:

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 <[email protected]>' 
    sent_on Date.today 

    body  :email => email 
    end 

Répondre

4

Vous pouvez obtenir un aperçu de votre file d'attente delayed_job via le modèle Delayed :: Job (je pense que le nom de celui-ci pourrait avoir changé dans les versions ultérieures). C'est juste un modèle ActiveRecord et vous pouvez faire toutes les choses que vous feriez à un normal. Trouver tous, trouver ceux avec failed_at ensemble, trouver ceux avec locked_by ensemble (en cours d'élaboration). Je trouve qu'ils sont beaucoup plus faciles à lire si vous les to_yaml: y Delayed::Job.all à partir de la console.

2

Vous devez être prudent de mettre Delayed::Job.destroy_failed_jobs = false car par défaut après 25 tente un emploi sera être supprimé. Ensuite, vous pouvez voir quels jobs ont échoué (et à quelle heure dans le champ failed_at). Il y a une tâche de rake pour les nettoyer.

Une autre file d'attente à regarder est Resque, qui est livré avec une petite application de gestion pour surveiller les files d'attente. Its introduction est une bonne lecture.