2008-12-23 69 views
12

爲Rails應用程序創建後臺任務的首選方式是什麼?我聽說過Starling/Workling和好的劇本/跑步者,但我很好奇這是否成爲事實上管理這種需求的方式?在Rails中旋轉後臺任務

謝謝!

澄清:我喜歡背景中的耙子的想法,但問題是,我需要持續運行或每10個小時運行一次。我不會奢望坐在網絡請求上,它需要由服務器啓動,與我網站上發生的活動異步。

回答

21

瑞恩·貝茨創造了三個偉大的截屏可能真正幫助你:他談到的各種優點和缺點使用每一個

  1. Rake in Background
  2. Starling and Workling
  3. Custom Daemon

。這應該有助於你開始。

+0

+1對於八哥。 當前正在生產中使用它。它足夠快速,可靠,並且代碼基數非常小,您可以在幾分鐘內輕鬆理解它。 – Michael 2008-12-23 03:08:54

0

雖然我不知道它是否成爲標準,但我已經與BackgroundRB取得了巨大成功。我有幾個工作人員,其中一些是由用戶操作觸發的長時間運行的任務,而另一些是按照時間表啓動的。

1

async_observer是最好的。它不會做各種愚蠢的忙碌的等待事物,或者失去像椋鳥,沒有數據庫輪詢等工作人員崩潰的工作......並且它非常好地集成到導軌中。

我推通過它的工作,它幾乎不在乎。

5

這取決於您的需求。

試用delayed_job,它由Shopify創始人Tobi維護,並由DHH分叉。

3

我通常依靠cronjob scheduling,因爲它提供了靈活性,無需編寫單獨的代碼來安排它。任何可以從shell執行的東西都可以預定!無論是任何腳本(ruby/rake task/py/bash /任何其他你喜歡的),cronjob調度都可以輕鬆實現。

如果在Windows上運行,可以使用scheduled tasks

希望這有助於。

1

已經提到的大多數插件都可以完成這項工作,但是如果您只需要一個Rake任務就可以按照設定的時間表運行,那麼實際上並不需要開始投入更多的體系結構。

只需添加一個cron作業,其執行

「CD /路徑/到/導軌/應用; RAILS_ENV =生產耙運行:我:任務」

爲什麼另起爐竈,在類Unix操作系統幾十年來一直在按計劃運行任務?

0

看看Taskr。它基本上像cron一樣,但是具有REST風格的Web界面。您可以使用它來安排任務以定期連接到您的Rails應用程序並觸發任意代碼(通過Taskr4rails插件)。它意味着很好地適合於圍繞RESTful服務構建的系統,此外它還可以在任務返回錯誤,無法運行等情況下通知您。