Параллельная обработка в Rails 3.1? - Проверка неработающих ссылок - PullRequest
3 голосов
/ 30 ноября 2011

У меня есть задача 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 ]

1 голос
/ 30 ноября 2011

В зависимости от ваших точных вычислительных потребностей, возможно, что-то вроде SimpleWorker - распределенный распределитель заданий на основе облака - может работать очень хорошо.

Вы могли бы (и у меня есть!) Сделать подобноенужно поместить все в распределенную рабочую очередь (например, Resque), а затем создать группу рабочих.Однажды я выполнил миграцию данных следующим образом: запустил 2 рабочих процесса на моем ноутбуке, 2 рабочих процесса на нетбуке и еще 3 рабочих процесса на настольном компьютере.

(мне нравится resque, потому что у него простой вебинтерфейс, где вы можете проверить статус вашей работы)

0 голосов
/ 09 июля 2012

Используйте параллельный драгоценный камень: https://github.com/grosser/parallel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...