在laravel中,您可以使用以下命令启动队列侦听器:
php artisan queue:listen
但是将使用多少工人(线程,进程)来处理队列? 有没有办法定义工人数量?
答案 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
参数来配置线程数