Laravel 5.6。在主管执行工作后停止工人

时间:2018-10-03 16:37:11

标签: php laravel laravel-5 supervisord laravel-queue

是否可以通过这种方式向工人发送停止信号,使其仅在处理作业之后停止。

目前我有一份工作,需要一些时间并且不能被打断,因为我只有一次尝试/尝试。

有时候,我需要阻止工作人员重新部署我的代码。是否只有在完成当前工作之后再开始新工作才能停止Laravel的工人?

我正在使用supervisor重新启动队列工作器。

由于当前每次部署我失去1个工作,我的客户亏了钱:(

P.S。

这不是Laravel Artisan CLI safely stop daemon queue workers的副本,因为他使用的是Artisan CLI,而我使用的是supervisor

3 个答案:

答案 0 :(得分:3)

autorestart=true + supervisor中的

php artisan queue:restart解决了该问题。

答案 1 :(得分:3)

有一个内置功能:

php artisan queue:restart
  

此命令将指示所有队列工作者在完成当前任务的处理后优雅地“死亡”,这样就不会丢失现有的任务。由于执行queue:restart命令时队列工作器将死亡,因此您应运行诸如Supervisor之类的进程管理器以自动重启队列工作器。

答案 2 :(得分:0)

Supervisord有一个XML-RPC Api,您可以从您的php代码中使用。我建议您使用Zend's XML-RPC Client