我閱讀了關於workers和delayed_job的文檔,但無法完全遵循,因此想要從一些策略和示例代碼中獲得先機。如何在heroku上使用delayed_job發送批量處理的電子郵件?
我有一個控制器,我用它來逐一發送郵件。現在,我每天都要查看哪天需要發送哪些電子郵件,然後通過heroku將其作爲delayed_job發送。
我該如何開始接近這個?謝謝。
這是基於問題的答案是什麼,我來了:
使用「每當」的寶石,我創建了以下schedule.rb
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
要確定是否我應該發送電子郵件或不,我創建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
這種設計比較合適嗎?我在Windows上開發並部署到heroku,所以不知道如何測試它......謝謝!
我可以測試我的本地windwos環境的cron功能嗎?有沒有辦法從控制器中添加工作人員(與使用控制檯相比)? – Angela 2010-08-24 03:14:03
我試圖打開和關閉這個工作的工人(所以我不會繼續支付)......不知道它是否正確....您怎麼看? – Angela 2010-08-24 04:22:57
查看佩德羅的延遲工作分叉,其中包括自動縮放heroku工人。 http://github.com/pedro/delayed_job/tree/autoscaling – mark 2010-08-24 06:38:30