Задать вопрос
@himik

отправка множества запросов по крону

есть сервис со списком множества адресов различных апи, необходимо каждый промежуток времени отправлять туда запрос и результат записывать в базу. какие методы, технологии вы использовали для таких задач или предположительно можно использовать. сейчас работает обычный пхп скрипт запускающийся по крону.
когда адресов много и некоторые не отвечают, то скрипт не успевает отработать в положенный отрезок времени. посему надо это дело распараллелить.
  • Вопрос задан
  • 3272 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Deshene
@Deshene
В свете того, что проект переписывается на Ruby, я бы посоветовал Вам обратить внимание на Resque. Также есть альтернатива в виде Sidekiq, которая может обеспечить более качественный уровень параллелизма за счет реального fork'a, так что начать я бы предложил все же с него.

Помимо предложенных выше решений, которые более специфичны для Ruby, можно использовать другой подход: поставить, например, RabbitMQ — это брокер сообщений, написанный на Erlang. Схема работы с RabbitMQ, упрощенно, следующая:
есть очереди, находящиеся под контролем RabbitMQ; в эти очереди разные процессы могут записывать сообщения (например, по крону, запустили скрипт, который определил фронт работ, и разослал сообщения о работах по очередям); есть процессы, которые «слушают» определенную очередь, и когда в очередь поступает новое сообщение RabbitMQ выбирает один слушающий процесс и передает ему это сообщение (т.е. распределением сообщений в очереди по процессам занимается RabbitMQ).
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
CrazySquirrel
@CrazySquirrel
gearman — просто и быстро.
Ответ написан
Комментировать
rakot
@rakot
Если вам нужен велосипед, то вот он:
Делите ваш скрипт на 2 части, в первой логика во второй список апи и «запускалка» логики с этим списком.
Вторую часть скрипта можете дробить на любое нужное количество.

Оффтоп. Почему списке хабов руби =)?
Ответ написан
@SibProgrammer
Во-первых крутим правильно тайм-ауты. Не отвечает и не успевает отработать - это в общем случае разные вещи.
Если сильно ничего переписывать не охота или нет времени, можно посмотреть на xargs -n1 -P
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы