Laravel如何设置或定义工人数量?

时间:2015-10-19 10:18:23

标签: php laravel queue

在laravel中,您可以使用以下命令启动队列侦听器:

php artisan queue:listen

但是将使用多少工人(线程,进程)来处理队列? 有没有办法定义工人数量?

2 个答案:

答案 0 :(得分:3)

https://laravel.com/docs/queues#supervisor-configuration

您生成一个配置文件,您可以在其中定义工作人员数量。

import psutil as pu
import time

class proc:

    def __init__(self,pid,pname,pmem):
        self.pid = pid
        self.pname = pname
        self.pmem = int(pmem)

    # def __lt__(self,other):
    #   return self.pmem<other.pmem

    # def __repr__(self):
    #   return str(self.pmem)+"\t"+self.pname

if __name__ == "__main__":

    meg = 1024*1024
    gig = meg*1024

    while True:
        print(pu.cpu_count())
        print(pu.cpu_percent())
        print("{:.3f} GB".format(pu.virtual_memory().used/gig))
        x = []
        for p in pu.pids():
            pro = pu.Process(pid=p)
            # print(pro.memory_info()[0])
            # print(pro.memory_info()[1])
            x.append(proc(pid=p,pname=pro.name(),pmem=pro.memory_info()[0]))

        sorted(x,key=lambda x:x.pmem,reverse=True)

        for i in x:
            print(str(i.pmem)+'\t'+i.pname)

        time.sleep(5)

答案 1 :(得分:1)

通过运行php artisan queue:listen,将只运行一个进程并从队列中获取作业。因此,将逐个提取和处理作业。

如果要使用多个线程来处理队列作业,则需要在不同的控制台中多次运行侦听器。但是,您可以使用Supervisor来管理线程,而不是手动运行它们,然后您可以通过在Supervisor configuration setting中设置numprocs参数来配置线程数