2009-09-03 15 views
4

我正在嘗試爲rails應用程序的各個部分使用delayed_job。問題是,如果我們有多個應用程序正在運行,但某些作業(例如處理上傳)需要由本地工作人員運行,而其他作業則可能由任何工作人員運行而受益。在需要在本地運行的某些任務在多臺計算機上使用delayed_job

有沒有人有任何建議,以獲得本地/非本地工作類型的好方法?

+0

您是否有可用於所有應用程序實例的共享文件系統? – Kenny

回答

8

我剛剛閱讀the latest issue of Rails Magazine中的「使用delayed_job進行後臺處理」,我發現您可能會濫用內置作業優先系統。

您可以爲工人指定最小和最大優先級。現在,如果你的特殊僅本地就業機會有42優先這名工人將只處理那些工作...

rake jobs:work RAILS_ENV=production MIN_PRIORITY=42 MAX_PRIORITY=42 

,而這名工人將處理除了那些特殊的地方,只是工作的一切:

rake jobs:work RAILS_ENV=production MIN_PRIORITY=0 MAX_PRIORITY=10 

這應該足夠靈活以實現您所需的功能。然而,我毫不猶豫地承認,我今天才瞭解到這個功能,並沒有嘗試過自己,所以YMMV!

+0

感謝您的建議。我會試試這個。當然,要有多個本地員工(每個實例一個),每個實例都需要具有特定的優先級,但這當然是可行的。 –

0

從結構上看,採取這些步驟可能更有意義,以便所有作業都可以從任何客戶端運行。

你提到處理上傳,你可以分享目錄,以便它可以被任何客戶端訪問?

+0

雖然這是一種可能性,但我想避免在網絡上處理大量上傳。 –

相關問題