芹菜:签名中的“队列”选项未在画布中传播

时间:2018-12-04 07:22:15

标签: celery celery-task

我们有一个设置,可以在不同工作器中的不同队列中执行任务:

@cel.task(bind=true, acks_late=true, queue='A')
def taskA(self):
   pass

@cel.task(bind=true, acks_late=true, queue='B')
def taskB(self):
   pass

我们有两个工作程序,workerA在队列='A'上侦听,workerB在队列='B'上侦听。

我们建立了一个简单的链,如下所示:

ch = celery.chain(taskA.si(), taskB.si())
ch.apply_async()

这预计将在worker A中运行taskA,在worker B中运行taskB。但是,在workerA中会出现错误:

Received unregistered task of type 'cel.taskB'.

但是,如果我将代码更改为:

ch = celery.chain(taskA.s().set(queue='A'), taskB.si(queue='B'))
ch.apply_async()

它按预期工作。我们不确定发生覆盖的位置。任何帮助将不胜感激。

0 个答案:

没有答案