工作线程在调用芹菜add_consumer后不会使用任务



我想利用Celery(以RabbitMQ作为后端MQ(通过不同的队列执行不同风格的任务。 一个要求是(由工作线程(从特定队列使用应该能够暂停和恢复。

芹菜,似乎通过调用add_consumercancel_consumer来具有这种能力。 虽然我能够取消特定工作人员队列中的任务消耗,但我无法通过调用add_consumer让工作线程恢复消耗。此处提供了重现此问题的代码。 我的猜测可能是我缺少某种参数,可以在celeryconfig中或通过启动工人时的参数提供?

如果能对此有几双新鲜的眼睛,那就太好了。 关于 Stackoverflow 的 add_consumer 和 Github 都没有太多讨论。 所以我希望这里有一些专家愿意分享他们的想法/经验。

--

我正在运行以下内容:

Windows OS, 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被传递到状态,队列为空。所以它无法恢复。

为了让芹菜工人恢复在Windows操作系统中的工作,下面列出了我的解决方法。

  • 更新芹菜:点子安装芹菜==4.1.0
  • 更新台球/生成.py:带try: except: pass的 338 至 339 行
  • (可选(安装事件:pip 安装事件let==0.22.1
  • 在 https://github.com/celery/celery/issues/4178 中根据注释启动辅助角色时添加--pool=eventlet--pool=solo

相关内容

  • 没有找到相关文章