Ларавел 5.6.Остановить работника ПОСЛЕ выполнения задания с руководителем - PullRequest
0 голосов
/ 03 октября 2018

Можно ли отправить сигнал остановки работнику таким образом, чтобы он остановился только ПОСЛЕ обработки задания.

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

Иногда мне нужно остановить работников, чтобы они повторно развернули мой код.Есть ли способ остановить работника Laravel только после завершения текущей работы и перед началом новой?

Я использую supervisor для перезапуска рабочих очереди.

Потому что в настоящее время при каждом развертывании я теряю 1 работу, а мой клиент теряет деньги: (

PS

Это НЕ дубликат Laravel Artisan CLI безопасно останавливает работников очереди демонов , потому что он использовал Artisan CLI, а я использую supervisor.

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Supervisord имеет XML-RPC Api , который вы можете использовать из своего php-кода.Я полагаю, вы используете XML-RPC-клиент Zend

0 голосов
/ 04 октября 2018

Для этого есть встроенная функция:

php artisan queue:restart

Эта команда будет указывать всем работникам очереди изящно "умереть" после того, как они завершат обработку своего текущего задания, чтобы никакие существующие задания не былипотерял.Поскольку работники очереди умрут при выполнении команды queue: restart, вы должны запустить диспетчер процессов, например Supervisor, для автоматического перезапуска работников очереди.

0 голосов
/ 03 октября 2018

autorestart=true в supervisor + php artisan queue:restart решает проблему.

...