Celery:每个任务的并发限制(每个任务的工作人员数量)?

时间:2012-02-06 21:41:01

标签: celery django-celery

是否可以在Celery中的每个任务级别设置并发性(并发工作者数)?我正在寻找更精细的CELERYD_CONCURRENCY(设置整个守护进程的并发性)。

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

1 个答案:

答案 0 :(得分:25)

您可以使用automatic routing将任务路由到不同的队列,这些队列将由具有不同并发级别的芹菜工作者处理。

  

celeryd-multi start fast slow -c:slow 3 -c:fast 5

此命令启动2名芹菜工作者分别以3和5个并发级别监听 fast slow 队列。

  

CELERY_ROUTES = {“tasks.a”:{“queue”:“slow”},“tasks.b”:{“queue”:   “快”}}

类型tasks.a的任务将分别由 slow 队列和tasks.b任务由 fast 队列处理。