工人可以接一份以上的工作吗?

时间:2020-10-26 06:38:47

标签: laravel queue jobs supervisord

我正在制作一个需要处理大量数据的系统。因此,我分离了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

1 个答案:

答案 0 :(得分:0)

您可以对不同类型的作业使用不同的作业队列。了解如何进行here-有关队列的Laravel文档。

Here是有关配置Supervisor的文档。 numprocs选项仅告诉服务器要运行多少队列工作器。您也许可以尝试设置多个laravel工作者,并将其与不同的队列结合在一起,但是总的来说,我认为您无能为力。最后,laravel的队列工作器只是在您的系统上运行的进程。因此,它是否可以并行运行取决于系统规格。

一个队列没有固定数量的作业。队列将处理作业表中的所有内容。如果作业成功,则将其从作业表中删除,否则,将其移至失败的作业中。