Laravel 5.7: Supervisorctl не перезапускает работника очереди с - PullRequest
0 голосов
/ 22 мая 2019

У меня есть супервизор для управления уведомлениями об очередях, как предложено в документации laravel . Я настроил супервизор согласно документации, и вот мой файл конфигурации.

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/application/artisan queue:work --tries=3
autostart=true
autorestart=true
user=root
numprocs=8
redirect_stderr=true
stdout_logfile=/var/www/application/storage/logs/worker/worker.log

Это работает нормально, но проблема в том, что через некоторое время все рабочие останавливаются и не перезапускаются, даже если есть ожидающие задания, которые должны быть выполнены.

Мне нужно перезапустить супервизор вручную, используя sudo supervisorctl start laravel-worker:*.

Как это можно решить?

Supervisorctl не автоматически перезапускает работника очереди демонов при зависании Это аналогичная проблема, но решение с учетом того, что я использую здесь то же самое.

Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 28 мая 2019

Вы можете использовать горизонт. горизонт обрабатывает все это для вас. https://laravel.com/docs/5.8/horizon

Пример сценария супервизора для горизонта:

[program:horizon]
process_name=%(program_name)s
command=php /var/www/application/artisan horizon
autostart=true
autorestart=true
user=root
redirect_stderr=true
stdout_logfile=/var/www/application/storage/logs/horizon.log

Также добавьте эту команду в ваш процесс развертывания:

php artisan horizon:terminate

Нет необходимости перезапускать его, супервайзер сделает это за вас.

...