如何配置芹菜从队列中同时执行任务

how to configure celery executing tasks concurrently from on queue

在8核环境下,celery默认应该可以并行处理8个传入任务。但有时当收到新任务时,celery 会将它们置于一个漫长的 运行 过程之后。

我尝试使用默认配置,让一名工作人员从一个队列中消费。

celery -A proj worker --loglevel=INFO --concurrency=8

我理解错了吗,一个并发为8的worker可以并行处理一个队列中的8个任务?

设置 celery 以防止上述此类行为的首选方法是什么?

简单来说并发就是一个worker上的作业数运行。预取是工作人员本身队列中的作业数量。您有 2 个选项中的 1 个。第一个是将预取乘数设置为 1。这意味着工作人员在您的情况下只会在其队列中保留 8 个额外的作业。我建议的第二个是创建 2 个不同的队列,一个用于短 运行 任务,另一个用于长 运行 任务。