2010-09-19 56 views
3

我們有一個rails v2.3.8/apache/passenger應用程序&對於一些長時間運行的任務有異步要求。所以我一直在評估圍繞rails/ruby​​的一些解決方案,希望得到一些解決方案的反饋。Rails背景/異步任務要求

另外我有一個問題 - 後臺任務/工作人員是如何產生的。鑑於我們的導軌應用程序將運行在apache /乘客容器內,這是否意味着背景/工作人員也會產生apache /乘客進程/線程?

是否只有一個工作線程/進程啓動,這意味着作業將被連續處理或作業是並行處理?我來自java/j2ee的背景,所以我對Message Beans/threading有很好的理解,但是對於rails消息傳遞解決方案的工作原理沒有任何線索。

一些在此基礎上,我們正在評估以下解決方案的參數是 - 性能/規模,分佈式的工人(在不同的節點上運行),Rails的V3支持

  • Beanstalkd - >異步觀察者

  • 令人吃驚 - > Workling

  • 的ActiveMQ(跺腳) - > Workling/activeMessageing

  • 延遲作業

+0

我很感興趣看到這個問題的結果。你有沒有做出決定,還是仍在尋找? – John 2010-11-08 21:13:17

回答

1

Phusion Passenger只處理Web請求。後臺任務最好由外部隊列系統處理。你已經提到了其中的一些。這些隊列系統作爲完全獨立的進程運行,不會影響Phusion Passenger管理的任何進程。

+0

謝謝,也感謝您對乘客的工作:) – kapso 2010-09-21 19:36:01

0

我知道這是一個非常晚的答案,但我面臨的一些問題可能值得考慮。

隨着乘客的智能產卵,所有連接都必須在產生新線程後重置。請參閱http://www.modrails.com/documentation/Users%20guide%20Nginx.html#_smart_spawning_gotcha_1_unintential_file_descriptor_sharing以供參考。

這也包括到隊列的連接。請務必使用

PhusionPassenger.on_event(:starting_worker_process) do |forked| 
    if forked 
    ... 
    end 
end if defined?(PhusionPassenger) 

中的相應代碼對其進行重置。