2011-11-29 83 views
3

我有一個rake任務,它檢查links表中的所有鏈接,看它們是否損壞(並通過電子郵件發送給管理員破損的部分進行修復)。Rails 3.1中的並行處理? - 檢查損壞的鏈接

這個過程需要5個小時才能完成! ?:((由於絕對數量的鏈接)

我如何並行化進程

這裏是我的參考代碼:

broken_links = [] 
Link.all.each do |link| 
    unless is_url_valid(link.url) 
    broken_links.push(link) 
    end 
end 
# email list of broken links to admin 
+0

您只能檢查對象是最近有所改動,不檢查沒有改變的對象? – megas

回答

1

根據您的具體計算需求,也許類似SimpleWorker - 一個基於雲的分佈式作業亞軍 - 可能工作得很好。

你可以(和我有!)做一個類似的事情,把一切在分佈式工作隊列(如Resque)上,然後創建一羣工作人員。我曾以這種方式完成數據遷移:在筆記本電腦上運行2個工作進程,在上網本上運行2個工作進程,以及在臺式機上運行另外3個工作進程。

(我喜歡resque,因爲它有一個簡單的Web界面,您可以檢查您的作業這一地位)