我想利用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,celery 3.1.15
最佳答案
要从队列中恢复,您需要指定队列名称以及目标工作程序。这是怎么做的。
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
传递给状态,并且队列为空。因此它无法恢复。关于python - 在调用celery add_consumer之后,worker不会消耗任何任务,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45784824/