2011-11-29 3 views
3

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つのワーカープロセスを実行するという方法でデータ移行を完了しました。

(それはあなたがあなたの仕事の状況を確認することができ、簡単なWebインターフェイスを持っているので、私はresqueが好き)

関連する問題