2011-09-06 42 views

回答

7

您可以將delayed_job用於帶有:run_at的自動重新啓動作業。事情的排序是這樣的:

class YourJob 
    def do_interesting_things 
     #... Do what needs to be done. 
     self.delay(:run_at => 1.minute.from_now).do_interesting_things 
    end 

    def self.start_me_up 
     new.do_interesting_things 
    end 
end 

然後某處應用程序的初始化過程中:

YourJob.start_me_up 
+0

謝謝 - 今天我會試試,如果它能正常工作,我會接受答案:-) –

+0

這是否工作正常?我需要每隔1分鐘運行一次rake任務,並且我認爲應該有一種方法可以讓它自行運行而不需要cron。目前在heroku上的cron每小時都有一個最大值。 – ylluminate

+0

@ ylluminate:我從來沒有聽到過,但它應該工作,嘗試它,讓我知道它是如何去。 –

8

截至今天,你可以在調度寶石,clockwork。 Heroku正式支持這一點,你可以找到他們的文檔here

+0

非常感謝 –

+3

請注意[發條](https://devcenter.heroku.com/articles/clock-processes-ruby)需要測功機,所以它的費用與任何其他類型的測功機相同(每小時0.05美元,可計入第二 - 約** $ 35 /月**)。那些*不*需要「每分鐘」安排,但每10分鐘*,*每小時*或*每天(在特定時間)*都可以,然後考慮[Heroku Scheduler](https ://addons.heroku.com/scheduler),一個免費的附加組件。 – user664833

+1

發條的另一個限制是它只能在單個測功機上運行,​​所以如果你有更多的計劃工作而不是單個進程可以處理的話,'delayed_job'解決方案會更好。 – Leopd