我想利用Celery(使用RabbitMQ作为后端MQ)通过不同的队列执行不同风格的任务。一个要求是来自特定队列的消费(由工作人员)应该具有暂停和恢复的能力。
Celery,通过调用add_consumer
和cancel_consumer
似乎有this capability。虽然我能够从特定工作人员的队列中取消任务消耗,但我无法通过调用add_consumer
让工作人员恢复消费。 The code to reproduce this issue is provided here。我的猜测可能是我错过了某种参数,要么在celeryconfig
中提供,要么在启动工作时通过参数提供?
很高兴看到一双新鲜的眼睛。 Stackoverflow关于add_consumer和Github的讨论不多。所以我希望这里有一些专家愿意分享他们的想法/经验。
-
我正在运行以下内容:
Windows操作系统,RabbitMQ 3.5.6,Erlang 18.1,Python 3.3.5,芹菜3.1.15
答案 0 :(得分:2)
要从队列中恢复,您需要指定队列名称以及目标工作者。这是怎么做的。
app.control.add_consumer(queue='high', destination=['celery@asus'])
这是add_consumer签名
def add_consumer(state, queue, exchange=None, exchange_type=None,
routing_key=None, **options):
在您的情况下,您正在使用
进行通话app.control.add_consumer('high', destination=['celery@high1woka'])
所以high
被传递到state并且队列为空。所以它无法恢复。
答案 1 :(得分:0)
为了让芹菜工人恢复在Windows操作系统中工作,我的工作方式如下所示。
try: except: pass
--pool=eventlet
或--pool=solo