2012-08-29 47 views

回答

3

Sidekiq並非真正用於重複性工作。從sidekiq github wiki page報價:

對於週期性任務,我建議使用發條或當它與您的系統集成的cron來調度任務的寶石。

我還沒有使用sidekiq(但像delayed_job的純淨紅寶石調度像rufus_scheduler其他類似的工具),但與非的cron基礎的工具的一個主要問題是保證重複的作業,將實際執行,只有數量你想要的時間。在一個典型的乘客生產環境中,所有ruby進程都可以輕鬆停止(因此完全不執行)或者二十個進程都嘗試執行相同的工作。

我們很長時間切換到whenever,因爲編寫定期作業很有趣,並且會爲您的系統添加cronjobs來處理所有hassels。

如果你真的想要一個簡單的解決方案,並沒有需要可靠的執行rufus_scheduler是一個選項

+0

請注意cronjobs /在執行時將啓動一個新的軌道ENV,這可以在許多督促系統unafforadble。 – laffuste

+1

如果您使用例如每當亞軍(可直接使用導軌模型),則這是正確的。這種便利當然伴隨着加載軌道環境的開銷(模型如何知道所有圍繞它的東西:)。 一般而言,對於需要更頻繁執行的循環任務,您可以編寫rake任務,甚至可以添加到每次配置時添加的簡單shell腳本。我認爲如果你每小時觸發一次工作超過幾次,cron不是它的地方。對於原來的問題,現在存在一個很好的解決方案,即sidetiq gem。 – Michael