2011-12-15 69 views
1

我目前在一個應用程序中使用了resque和resque-scheduler,這個應用程序將不得不處理大量的重複性作業 - 「每小時做一次」,「每天做這個」等等。目前,我只是簡單地排隊在作業本身中運行作業,HourlyJob隊列有一個.enqueue_at(1.hour.from_now,HourlyJob)等。應該預計resque-scheduler隊列處理/批次/延遲作業嗎?

我應該這樣做嗎?它「感覺」像我應該有一個使用resque-schedulers的cron類型功能的靜態循環工作,然後計劃說下一個5分鐘的延遲工作......但我真的在做的是將工作從(可能快速,基於Redis)resque-scheduler到我的(可能不太好執行,基於mysql的)代碼,當然?

我現在怎麼做有什麼不對嗎?

回答

0

我個人使用由resque調度提供cron的風格,你的使用情況正是它被用於建造:

  • 你更直接地表明這些重複性作業。
  • 一切都位於相同的YAML文件,而不是多個作業類/模塊。

通過排隊實際工作中作業的下次運行:

  • 您運行一次運行會當你的員工/工作/服務器出現故障時丟失的風險。
  • 您在Redis中不必要地使用更多內存,調度程序進程將不會將作業添加到Redis,直到準備好運行。

酒花這有助於。

+0

感謝您的評論。 :) 問題是,這些工作不是靜態的,而cron風格的調度程序似乎只適用於靜態工作 - 將會有許多動態的,重複性的工作,這就是拋出我的東西。每次安排新工作時,是否有一種方法可以在不重新啓動schduler的情況下對cronlike作業文件進行「重新散佈」? – 2011-12-19 06:57:30