是否可以通过这种方式向工人发送停止信号,使其仅在处理作业之后停止。
目前我有一份工作,需要一些时间并且不能被打断,因为我只有一次尝试/尝试。
有时候,我需要阻止工作人员重新部署我的代码。是否只有在完成当前工作之后再开始新工作才能停止Laravel的工人?
我正在使用supervisor
重新启动队列工作器。
由于当前每次部署我失去1个工作,我的客户亏了钱:(
P.S。
这不是Laravel Artisan CLI safely stop daemon queue workers的副本,因为他使用的是Artisan CLI,而我使用的是supervisor
。
答案 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