Python 如何配置芹菜从队列上并发执行任务

Python 如何配置芹菜从队列上并发执行任务,python,concurrency,celery,Python,Concurrency,Celery,在具有8个内核的环境中,西芹默认情况下应该能够并行处理8个传入任务。但有时当收到新任务时,会将它们放在长时间运行的流程后面 我使用默认配置,让一个工人从一个队列中消费 芹菜-项目工作者--loglevel=INFO--concurrency=8 我的理解是错误的吗?一个并发度为8的工作者能够并行处理一个队列中的8个任务 设置芹菜以防止上述行为的首选方法是什么?简单地说,并发是一个工人身上运行的作业数。Prefetch是工作进程本身队列中的作业数。这里有2个选项中的1个。第一种方法是将预取乘数设置

在具有8个内核的环境中,西芹默认情况下应该能够并行处理8个传入任务。但有时当收到新任务时,会将它们放在长时间运行的流程后面

我使用默认配置,让一个工人从一个队列中消费

芹菜-项目工作者--loglevel=INFO--concurrency=8

我的理解是错误的吗?一个并发度为8的工作者能够并行处理一个队列中的8个任务


设置芹菜以防止上述行为的首选方法是什么?

简单地说,并发是一个工人身上运行的作业数。Prefetch是工作进程本身队列中的作业数。这里有2个选项中的1个。第一种方法是将预取乘数设置为1。这将意味着,在您的情况下,工人将只在其队列中保留8个额外的作业。我建议的第二种方法是创建两个不同的队列,一个用于短时间运行的任务,另一个用于长时间运行的任务。

我也经历过同样的行为。在谷歌搜索的时候,我发现这似乎很相似。也许这里描述的解决方案有帮助?我可以看出预取是如何导致这种行为的。它是否能够定义更多的工人从同一队列中消费,而不并行处理相同的任务?我有点不明白你的意思。您可以将多个工作人员分配到同一队列,这些工作人员将同时处理任务,但不会从队列中抓取相同的任务。然后,在玩芹菜实例时,我发现这是一种奇怪的行为。我使用的是附加了-n worker2的同一个worker命令。%%h-n选项命名worker,查看-Q选项并将任务移动到不同的队列中。