我们有一个设置,可以在不同工作器中的不同队列中执行任务:
@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()
它按预期工作。我们不确定发生覆盖的位置。任何帮助将不胜感激。