gpt4 book ai didi

python - RQ 与 supervisord 并发?

转载 作者:行者123 更新时间:2023-11-28 17:36:30 25 4
gpt4 key购买 nike

全部,我试图“强制”RQ 工作人员使用 supervisord 同时执行。我的设置 supervisord 设置似乎工作正常,因为 rq-dashboard 显示 3 个工作人员、3 个 PID 和 3 个队列(每个工作人员/PID 一个)。 Supervisord 设置如下(仅显示 worker 1 设置,下面定义了另外 2 个 worker):

[program:rqworker1]
command = rqworker 1
process_name = rqworker1-%(process_num)s
numprocs = 1
user = username
autostart = True
stdout_logfile=/tmp/rqworker1.log
stdout_logfile_maxbytes=50MB

RQ workers running under supervisord

问题是当我同时发送 3 个作业时,运行的总时间是单个任务的 3 倍(即,总时间与任务数量成线性关系,可以扩展到 x4、x5 等)。似乎没有并发可用。我还通过将新作业发送到具有最少启动+排队作业的队列来实现原始负载平衡,效果很好(观察到作业在队列中均匀分布)。

为什么这个设置不允许并发?

关于我遗漏的设置有什么注意事项吗?

请注意,当我迁移到 PY3 时,rq-gevent-worker 包(在早期 w.r.t. concurrency/RQ 中运行良好)不再可用,并且 PY3 尚不支持 gevent 本身。但这给了我一个线索,即并发是可能的。

最佳答案

Modifying my comment from above into an answer...

使用supervisord 并行运行多个rqworker 进程是intended patternpython-rq 中,所以不要担心你是在“强制”它。您的想法实际上是正确的。

另一方面,编写您自己的负载平衡算法是一种反模式:这正是 python-rq 为您所做的。

如果你想在三个 worker 之间分担工作,那么他们应该都听同一个队列。尝试删除两个主管配置 block ,并在剩下的一个 block 中,将 numprocs 更改为 3。如果您向该队列快速提交三个作业,您应该会看到三个工作人员并发执行。

关于python - RQ 与 supervisord 并发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29928166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com