我有一个rake任务,检查links
表中的所有链接,看看它们是否坏了(并通过电子邮件向管理员发送要修复的损坏的链接)。
此过程需要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 :(得分:1)
根据您的确切计算需求,可能类似SimpleWorker - 基于云的分布式作业运行员 - 可能效果非常好。
你可以(而且我有!)将所有内容放在分布式工作队列(如Resque)上做类似的事情,然后创建一堆工作者。我曾经用这种方式完成数据迁移:在我的笔记本电脑上运行2个工作进程,在上网本上运行2个工作进程,在桌面计算机上运行另外3个工作进程。
(我喜欢resque,因为它有一个简单的网络界面,你可以检查你的工作状态)
答案 1 :(得分:0)