1
我有一個生成HTML,XML和CSV報告的控制器。用於這些報告的查詢需要一分鐘才能返回結果。Rails中的長時間運行任務
什麼是在後臺運行這些任務然後將結果返回給用戶的最佳方法?我看了看Backgroundrb。有什麼更符合我的需求的基礎?
我有一個生成HTML,XML和CSV報告的控制器。用於這些報告的查詢需要一分鐘才能返回結果。Rails中的長時間運行任務
什麼是在後臺運行這些任務然後將結果返回給用戶的最佳方法?我看了看Backgroundrb。有什麼更符合我的需求的基礎?
你可以看看使用DelayedJob爲你執行這些查詢,並有一個名爲「NotificationQueue」的附加表。作業完成後(使用其結果集),將結果集和進行查詢的人員的用戶ID存儲在NotificationQueue表中。然後在每個頁面加載(並且如果你願意的話,每15-20秒),輪詢該數據庫並查看是否有任何已完成的查詢。因爲你寫你的代碼,如果它不將是一個延遲的工作,只是更改代碼做以下
DelayedJob真的很大:
#Your method
Query.do_something(params)
#Change to
Query.send_later(:do_something, params)
我們用它所有的工作時間,而且效果很好。
我只是*崇拜*這種設計。 – 2010-02-23 18:15:22
DelayedJob看起來很有希望,但是如何在使用ActiveRecord時存儲結果集? – Trevor 2010-02-24 00:50:03
DelayedJob基本上運行您的應用程序的副本。它可以訪問你的數據庫,所以當你調用延遲的作業時,它會說:「好的,用這些數據運行這段代碼」。它將像常規函數一樣保存到數據庫中。 – 2010-02-24 01:55:29