如何解决工人可以接一份以上的工作吗?
我正在制作一个需要处理大量数据的系统。因此,我分离了30个功能相同但数据不同的作业。我想知道工人和工作的状况如何。我正在使用larvel 6 and supervisor
。当我设置numprocs=1
并检查作业表时,我看到9 of 30 jobs have attempts=1
。如果是这样,我认为1名工人将获得9个工作。设置numprocs=2
时,我看到10 of 30 jobs have attempts=1
。即使一个工人有9个工作,如果我有2个工人,也应该18 of 30 jobs have attempts=1
,对吗?
是不是一个工人只能从事一份工作?
这是我的主管配置。
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=/bin/php /var/www/test-dir/artisan queue:work --sleep=2 --timeout=3000 --daemon
autostart=true
autorestart=true
user=nginx
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/test-dir/worker.log
stopwaitsecs=3600
解决方法
您可以对不同类型的作业使用不同的作业队列。了解如何进行here-有关队列的Laravel文档。
Here是有关配置Supervisor的文档。 numprocs
选项仅告诉服务器要运行多少队列工作器。您也许可以尝试设置多个laravel工作者,并将其与不同的队列结合在一起,但是总的来说,我认为您无能为力。最后,laravel的队列工作器只是在您的系统上运行的进程。因此,它是否可以并行运行取决于系统规格。
一个队列没有固定数量的作业。队列将处理作业表中的所有内容。如果作业成功,则将其从作业表中删除,否则,将其移至失败的作业中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。