J'ai lu la documentation sur les workers et delayed_job et je n'ai pas pu suivre exactement, donc j'ai voulu prendre de l'avance avec une stratégie et un exemple de code.Comment puis-je utiliser delayed_job sur heroku pour envoyer des e-mails qui sont groupés?
J'ai un contrôleur que j'utilise pour envoyer des courriels un par un. Maintenant, chaque jour, je veux vérifier quels e-mails doivent être envoyés pour la journée, puis les envoyer par heroku comme un travail retardé.
Comment commencer à aborder cela? Merci.
C'est ce que je viens avec à partir des réponses:
Utilisation de la « chaque fois que » bijou, j'ai créé le schedule.rb suivant
every 1.day, :at => '4:30 am' do
heroku = Heroku::Client.new(ENV['HEROKU_USER'], ENV['HEROKU_PASS'])
heroku.set_workers(ENV['HEROKU_APP'], 1)
Contact.all.each do |contact|
contact_email = contact.email_today
unless contact.email_today == "none"
puts contact.first_name
puts contact_email.days
puts contact.date_entered
Delayed::Job.enqueue OutboundMailer.deliver_campaign_email(contact,contact_email)
end
end
heroku.set_workers(ENV['HEROKU_APP'], 0)
end
Pour déterminer si je devrais envoyer un email aujourd'hui ou pas, j'ai créé la méthode pour contact.rb:
def email_today
next_event_info = self.next_event_info # invokes method for contact
next_event = next_event_info[:event]
delay = next_event_info[:delay]
if next_event.class.name == "Email" && from_today(self, next_event.days) + delay < 0 #helper from_today
return next_event
else
return "none"
end
end
Est-ce que cela vous semble exact? Je suis en train de développer sur windows et de déployer à heroku alors je ne sais pas comment le tester ... merci!
Puis-je tester la fonctionnalité cron de mon environnement local de windwos? Existe-t-il un moyen d'ajouter des travailleurs depuis le contrôleur (par rapport à l'utilisation de la console)? – Angela
J'ai mis ma tentative d'allumer et d'éteindre les travailleurs pour ce travail (donc je ne continue pas à payer) ... je ne sais pas si c'est juste ... qu'en pensez-vous? – Angela
Découvrez la fourchette de travail retardée de Pedro, qui inclut les travailleurs d'heroku à échelle automatique. http://github.com/pedro/delayed_job/tree/autoscaling – mark