Может ли Resque запускать задания параллельно? - PullRequest
0 голосов
/ 28 июня 2011

Может ли Resque запускать несколько похожих заданий параллельно?Если да, то как бы вы подготовили рабочих для этого?

Ответы [ 3 ]

4 голосов
/ 28 июня 2011

Я бы взглянул на гем Resque Pool , с его помощью можно легко настроить несколько рабочих для разных очередей.Затем вы можете сгруппировать похожие задачи по очереди.

Если вы еще не используете что-то для мониторинга процессов, resque-pool может помочь вам управлять вашими работами с помощью единого сервера.Это также дает вам несколько способов контролировать, что происходит с вашими работниками.Кроме того, он позволяет легко изменять количество рабочих мест для каждой очереди с помощью простого файла yaml.

3 голосов
/ 28 июня 2011

Если вы передаете опцию COUNT в задачу rake, вы можете запустить несколько рабочих:

COUNT=5 QUEUE=* rake resque:workers

В производственном процессе вы можете использовать что-то вроде God, чтобы ваши процессы работали. Проект Resque имеет пример сценария конфигурации , который допускает несколько рабочих.

0 голосов
/ 28 июня 2011

Если вы ведете мониторинг с помощью monit, будьте осторожны, используйте один pid-файл на каждого работника

#!/bin/sh
cd <path of app>/current/
for i in 3; 
do
    VVERBOSE=1 PIDFILE=<path of app>/shared/pids/resque_$i.pid RAILS_ENV=production QUEUE=name_of_queue bundle exec rake environment resque:work > <path of app>/shared/log/resque_$i.log
done
...