【问题标题】:celery control add_consumer giving Error: No nodes replied within time constraintcelery control add_consumer 给出错误:在时间限制内没有节点回复
【发布时间】:2015-10-29 23:30:19
【问题描述】:

我想将 celery worker 配置为仅从特定队列消费, 我在 celery 文档中看到 control add_consumer 就是这样做的。 问题是当我尝试时: celery control -A [App_name] add_consumer [queue_name] worker1.h% 它给了我错误:

错误:在时间限制内没有节点回复

非常感谢任何帮助。 有没有其他方法可以让我的工作人员从特定队列中消费?

注意:celery -A [App_name] worker1.h% 启动芹菜工人,一切正常,这对我所有的队列都有效。我想指定一个工作人员从特定队列中消费。 使用的代理:rabbitmq

【问题讨论】:

    标签: django rabbitmq celery


    【解决方案1】:

    我只会运行一个单独的工人

    celery -A app_name -Q queue_name --concurrency=1
    

    【讨论】:

    • 我试过了,这里发生了一些奇怪的事情,它被附加到我们用于任务的所有队列中。
    • 对不起,这很不清楚。什么是附上?附加是什么意思-所有工作人员都在运行该任务?如果是这样,您的某处配置错误
    • 所以定义了一个任务,它有 2 个步骤,这些步骤从不同的队列中消耗,现在当我配置一个工作人员以上述方式从队列中消耗时,它应该只执行 1 个步骤,但它不做那。当我在rabbitmq仪表板中检查消费者时,它显示该工作人员作为消费者添加到两个队列中:(
    • 如果您需要解决问题的帮助,请更新您的答案以显示用于运行工作程序的命令行和您的 celery 配置,以及显示问题的简单示例任务的代码
    • 类 OrderInfoConsumerStep(ConsumerStep): queue = Queue(settings.QUEUES) def get_consumers(self, channel): return [Consumer(channel, queues=[self.queue, ], callbacks=[self. handle_message, ], accept=['json', ])] def handle_message(self, body, message): data = json.loads(body)//storeData message.ack() celery_app.steps['consumer'].add (OrderInfoConsumerStep)
    猜你喜欢
    • 2019-10-25
    • 2012-11-14
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 2016-07-12
    相关资源
    最近更新 更多