2010-05-10 180 views
1

我的控制器中的某個函數需要大量時間來處理(重分貝工作)。所以當我的用戶點擊表單上的「提交」時,他必須等待完成這個過程非常長。有沒有什麼辦法在「提交」時,用戶在沒有任何延遲的情況下被重定向到下一個視圖,而處理在後端繼續而不會讓用戶等待? 謝謝&乾杯!Rails中的後臺處理

回答

2

當用戶發出請求時,將作業排隊,然後將請求重定向到您想要的位置。

有兩種流行的Ruby寶石作業處理:

Delayed Job
Resque

延遲任務可能是建立在更容易,因爲它不需要Redis的。

0

對於這樣的事情,我通常會將東西轉儲到數據庫隊列中,然後使用cronjob來實際運行它。例如,假設我必須發送一封電子郵件給所有使用該軟件的客戶端。我會把這個消息放到一個數據庫表中,以及一些關於誰應該得到它的信息,然後一個cron工作實際上會發送。

0

這聽起來對你來說需要分叉這個需要很長時間的過程。 例如:

fork { "this code is being ran in background" }

的問題是,因爲連接不具有持續性的代碼將無法正常工作與SQL不錯。爲了解決這個問題,我一直在使用spawn plugin一段時間,結果非常好。