2010-04-12 26 views
2

這看起來像是一個關於stackoverflow的FAQ,但我的要求有點不同。雖然我之前使用BackgroundRB和DJ在ruby中運行後臺進程,但這次我的要求是對大量數據運行一些沉重的分析和數學計算,而且我只需要在每月的前15天。通過這個,我很想使用cron並運行ruby腳本來實現這個目標。在rails中的後臺處理

我想知道/理解的是: 1 - 使用cron是一個好主意(因爲我不是系統管理員,所以雖然我對cron有基本的想法,但我不太過於自信完美地完成) 2 - 我們可以以某種方式修改DJ僅在本月的前15天運行(使用/不使用cron),然後只要一天中隊列中的所有作業都結束,就停止並退出不希望它每次都爲了一份新工作而對數據庫進行ping操作......當DJ開始時,無論任務將在隊列中,這將是所有的)。

我不確定我是否以正確的方式提出問題,但對此方向的任何幫助將不勝感激。

謝謝

回答

3

用於cron的「分鐘小時天月星期幾」時間規範,通過每月的十五凌晨3:33 1日將是「33 3月1日至15日* *」

+0

非常酷。不知道你可以做那樣的範圍。 +1 – 2010-04-12 20:54:05

+0

非常感謝......我不知道它會那麼簡單! – hashpipe 2010-04-15 14:22:33

0

是的,爲什麼不呢?用cron去吧。它在野外得到了很好的測試,非常適合運行定期任務並且非常易於使用。你甚至不需要學習crontab語法(雖然這很容易) - 只需將你的腳本放到/etc/cron.daily(這個選項可能只在某些Linux發行版上可用)。

我不確定「每個月的唯一第一天」事件,但是您可以在任務內輕鬆處理這種情況,對吧?

編輯:

退房齊名的回答,看看如何只在一定範圍內的天運行任務。

+0

可能要考慮railscron - http:// workingwithrails。com/railsplugin/4962-rails-cron – klochner 2010-04-12 17:42:04

0

我也有過這樣的要求。我遵循Advanced Rails Recipes book中的「自動定期任務」配方75。配方由David Bock編寫。它有一些代碼片段和關於如何使用cron和capistrano可以實現的指導原則。然而,關於必須在目標機器上的用戶/權限還有一個未解決的問題(但提到)。做正確並不難,你只需要記住要做到這一點,並把它放在你的部署capistrano腳本中。

大衛博克似乎繼續在這方面的工作,現在創造了一個與cron一起使用的寶石:請參閱his blog,並按照crondonkulous on github。 Crondonkulous可能會很好地照顧這個用戶/許可的事情和更多,我沒有嘗試過。

Jarl