Rails 3.1中的并行处理? - 检查损坏的链接

时间:2011-11-29 21:18:23

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

我有一个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

2 个答案:

答案 0 :(得分:1)

根据您的确切计算需求,可能类似SimpleWorker - 基于云的分布式作业运行员 - 可能效果非常好。

你可以(而且我有!)将所有内容放在分布式工作队列(如Resque)上做类似的事情,然后创建一堆工作者。我曾经用这种方式完成数据迁移:在我的笔记本电脑上运行2个工作进程,在上网本上运行2个工作进程,在桌面计算机上运行另外3个工作进程。

(我喜欢resque,因为它有一个简单的网络界面,你可以检查你的工作状态)

答案 1 :(得分:0)