2011-11-29 80 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界面,您可以检查您的作业这一地位)