21

是否可以在Celery的每个任务级别上设置并发(同时工作的人数)?我正在寻找更细粒度的东西CELERYD_CONCURRENCY(为整个守护进程设置并发)。

使用场景是:我有一个 celerlyd 运行不同类型的任务,具有非常不同的性能特征 - 有些很快,有些非常慢。对于一些人来说,我想尽可能快地做尽可能多的事情,对于其他人来说,我想确保任何时候只有一个实例在运行(即并发 1)。

4

1 回答 1

30

您可以使用自动路由将任务路由到不同的队列,这些队列将由具有不同并发级别的 celery worker 处理。

celeryd-multi 启动快慢 -c:slow 3 -c:fast 5

此命令启动 2 个 celery 工作人员,分别以 3 和 5 个并发级别侦听快速慢速队列。

CELERY_ROUTES = {"tasks.a": {"queue": "slow"}, "tasks.b": {"queue": "fast"}}

tasks.a 类型的任务将分别由队列处理,tasks.b 任务将分别由快速队列处理。

于 2012-02-06T23:34:16.053 回答