Как правильно настроить очереди Laravel для производства с супервизором?

Я пытаюсь настроить использование очередей для хранения журналов, отправки электронной почты и других задач.

Я решил использовать beanstalkd и супервизор для управления выполнением очереди заданий. Я установил pda/pheanstalk ~2.0 с композитором, сделал правильные настройки в app/config/queue.php, написал мой класс очереди и попытался выполнить задачу.

Это пример, это журнал в журнале:

Auth::attempt(array(
'email' => $email,
'password' => $password
));

if (Auth::check()) {
$debounce = Carbon::now()->addSeconds(10);
Queue::later($debounce, 'SaveAcessLog', array('user' =>  Auth::id(), 'ip' => Request::getClientIp()));
}

Так что за наблюдением я следил этот урок. После установки я следил за каждым шагом и делал laravel_queue.conf так же run_queue.sh исполняемые файлы

Проблема в том, что я не могу выполнить любую задачу. Когда я проверяю sudo supervisorctl Я получаю:

laravel_queue                    FATAL      Exited too quickly (process log may have details)

Доступ к файлу журнала супервизора по адресу /var/log/supervisor/supervisord.log показывает:

2015-04-02 20:16:57,251 INFO supervisord started with pid 1269
2015-04-02 20:16:58,254 INFO spawned: 'laravel_queue' with pid 1316
2015-04-02 20:16:58,277 INFO exited: laravel_queue (exit status 127; not expected)
2015-04-02 20:16:59,279 INFO spawned: 'laravel_queue' with pid 1525
2015-04-02 20:16:59,287 INFO exited: laravel_queue (exit status 127; not expected)
2015-04-02 20:17:01,294 INFO spawned: 'laravel_queue' with pid 1753
2015-04-02 20:17:01,303 INFO exited: laravel_queue (exit status 127; not expected)
2015-04-02 20:17:04,658 INFO spawned: 'laravel_queue' with pid 1808
2015-04-02 20:17:04,668 INFO exited: laravel_queue (exit status 127; not expected)
2015-04-02 20:17:05,669 INFO gave up: laravel_queue entered FATAL state, too many start retries too quickly

Итак, если я попробую php artisan queue:work задача будет выполнена! Чего мне не хватает в моей настройке супервизора?

Заметка

Я открыт, чтобы использовать что-то другое для надзора, если это проще или эффективнее.

1

Решение

Проверьте, если руководитель startsecs=0 помогает. Документы руководителя

Мой конфиг:

[program:myqueue]
#command=php artisan queue:work --daemon --sleep=10 --verbose
command=php artisan queue:work --daemon --sleep=90 --tries=1 -vvv
## --timeout=0 --tries=0
#user=user
directory=/usr/share/nginx/laravel
stdout_logfile=/usr/share/nginx/laravel/app/storage/logs/myqueue_supervisord.log
redirect_stderr=true
autostart=true
startsecs=0
#autorestart=false
#startretries=0
#exitcodes=1
3

Другие решения

Я знаю, что это старый вопрос, но мне больше повезло, используя artisan queue:listen в моей конфигурации супервизора, таким образом, он не продолжает запускать и останавливать процесс, а должен перезапускаться, если он останавливается по какой-то причине.

Обновить

Кажется, что это не лучшее решение, я обнаружил, что он будет работать в очереди большую часть времени. Однако, если существует длительный период без обработки заданий, новые задания, по-видимому, не будут обработаны, если супервизору не будет приказано снова запустить работника.

Больше обновлений

Теперь у меня есть конфигурация, аналогичная следующей:

[program:worker]
process_name=%(program_name)s_%(process_num)02d
command=php artisan queue:work --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
numprocs=8
redirect_stderr=true
startretries=10
stdout_logfile=/dir/logs/worker.log

Кажется, что он работает хорошо и долго не падал.

1

По вопросам рекламы [email protected]