2009-10-28 147 views
7

我使用延遲工作來管理後臺工作。
但是我有一些需要定期執行的任務。例如,每小時,每天或每週。定期延遲工作

現在,當我執行任務時,我創建了一個要在一天/一週/一個月內執行的新任務。

但是我不太喜歡它。如果由於任何原因,任務沒有完全執行,我們不會創建下一個任務,我們可能會失去任務的執行。

您如何在導軌應用程序中管理這種事情(延遲工作)以確保您的常規任務列表保持正確?

回答

5

如果你有機會獲得的Cron,我強烈建議每當

http://github.com/javan/whenever

你指定你想要的運行,並在死者簡單的紅寶石什麼頻率,每當供應耙任務,將其轉換成crontab並更新您的系統的crontab。

如果您無法使用頻繁的cron(就像我沒有,因爲我們在Heroku上),那麼DJ就是要走的路。

你有幾個選項。

  1. 做你在做什麼。 DJ會重試每個任務一定次數,所以你有一定的寬容

  2. 把創建下一個DJ作業的代碼放在確保塊中,以確保它在得到異常或其他不良事件後被創建

  3. 創建另一個定期運行的DJ,檢查並確保合適的DJ存在,如果不存在,則創建它們。當然,這與其他選項一樣容易出錯,因爲顯示器和實際的DJ都運行在相同的環境中,但這是一些東西。

+0

好東西,每當。有些任務允許我在更改某些內容時重新加載crontab(我需要動態更改任務)。謝謝 :) – 2009-10-28 15:29:30

1

有沒有什麼特別的原因,你爲什麼不使用cron這種類型的東西? 或者也許更像紅寶石一樣rufus-scheduler,這是相當easy to use和非常可靠。

如果你不需要排隊,我認爲這些工具是一種可行的方法。

+1

那麼我已經有延期的工作deamon。我想避免推出第二個。 – 2009-10-28 15:28:05

+0

你不需要用rufus-scheduler啓動任何新的守護進程。它使用簡單的循環或EventMachine來檢查要運行的作業。 cron是一個守護進程,但你通常需要它並運行。 – 2009-10-28 15:40:25