2013-03-09 40 views
0

插入到數據庫中的每個Thing都具有archive屬性。當設置爲0時,什麼都不會發生。但是,如果不是,我希望它被添加到要處理的隊列中。delayed_job vs cron用於長時間運行的任務

存檔Thing可能需要3到30秒,因爲發送和處理了很多請求。所以我的問題是我做這麼:

  1. Thing具有archive設置爲1,把它放在一個隊列可以通過Rake任務,每隔一段時間進行處理(每15分鐘左右),和然後有archive屬性設置爲2,被再次
  2. 加工製作一個do_archive方法上Thing,和保存時,做self.delay.do_archive停止,並讓delayed_job處理所有這一切對我來說

一些Things不需要處理,歸檔也不是時間必需的事情。我的直覺是,delayed_job可能是一個更好的主意,因爲它不是時間特定的,只是經過一個隊列,而不是每天午夜運行腳本。

回答

1

我覺得你在你最後的段落中幾乎是固定的。如果它是依賴時間而不是事件驅動的,那麼cron更有意義。但是,如果發生了一個事件並且可以將其排隊,並且它不是時間相關的,那麼請使用後臺作業。

您可能要考慮的一件事是實際的消息傳遞系統是否更有意義。儘管像RabbitMQ這樣的東西可能對你今天的地方有點過分,但還有其他更簡單的選項。 SidekiqResque是兩種流行的選項,可以讓您更好地控制後臺作業,並提供delayed_job的簡單性和消息傳遞系統的穩健性。