Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 芹菜自定义队列异常_Python_Rabbitmq_Celery_Amqp - Fatal编程技术网

Python 芹菜自定义队列异常

Python 芹菜自定义队列异常,python,rabbitmq,celery,amqp,Python,Rabbitmq,Celery,Amqp,我正在将配置从Celery 3.1.25升级到4.0.2,目前我在启动worker时发现一个问题,并且有一条消息排队,它会引发“NotImplementedError”。当以另一种方式执行时(首先是工作者,然后发送消息),不会发生这种情况 错误: [2017-01-20 17:12:13,984: INFO/MainProcess] mingle: sync with 11 nodes [2017-01-20 17:12:13,985: INFO/MainProcess] mingle: syn

我正在将配置从Celery 3.1.25升级到4.0.2,目前我在启动worker时发现一个问题,并且有一条消息排队,它会引发“NotImplementedError”。当以另一种方式执行时(首先是工作者,然后发送消息),不会发生这种情况

错误:

[2017-01-20 17:12:13,984: INFO/MainProcess] mingle: sync with 11 nodes
[2017-01-20 17:12:13,985: INFO/MainProcess] mingle: sync complete
[2017-01-20 17:12:13,993: INFO/MainProcess] Canceling queue celery
[2017-01-20 17:12:13,998: INFO/MainProcess] Started consuming from 1.my_queue
[2017-01-20 17:12:14,001: CRITICAL/MainProcess] Unrecoverable error: NotImplementedError(u'Consumer does not have any callbacks',)
Traceback (most recent call last):
  File "/opt/my-program/lib/python2.7/site-packages/celery/worker/worker.py", line 203, in start
    self.blueprint.start(self)
  File "/opt/my-program/lib/python2.7/site-packages/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "/opt/my-program/lib/python2.7/site-packages/celery/bootsteps.py", line 370, in start
    return self.obj.start()
  File "/opt/my-program/lib/python2.7/site-packages/celery/worker/consumer/consumer.py", line 318, in start
    blueprint.start(self)
  File "/opt/my-program/lib/python2.7/site-packages/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "/opt/my-program/lib/python2.7/site-packages/celery/worker/pidbox.py", line 50, in start
    self.node.channel = c.connection.channel()
  File "/opt/my-program/lib/python2.7/site-packages/kombu/connection.py", line 266, in channel
    chan = self.transport.create_channel(self.connection)
  File "/opt/my-program/lib/python2.7/site-packages/kombu/transport/pyamqp.py", line 100, in create_channel
    return connection.channel()
  File "/opt/my-program/lib/python2.7/site-packages/amqp/connection.py", line 456, in channel
    channel.open()
  File "/opt/my-program/lib/python2.7/site-packages/amqp/channel.py", line 448, in open
    spec.Channel.Open, 's', ('',), wait=spec.Channel.OpenOk,
  File "/opt/my-program/lib/python2.7/site-packages/amqp/abstract_channel.py", line 73, in send_method
    return self.wait(wait, returns_tuple=returns_tuple)
  File "/opt/my-program/lib/python2.7/site-packages/amqp/abstract_channel.py", line 93, in wait
    self.connection.drain_events(timeout=timeout)
  File "/opt/my-program/lib/python2.7/site-packages/amqp/connection.py", line 464, in drain_events
    return self.blocking_read(timeout)
  File "/opt/my-program/lib/python2.7/site-packages/amqp/connection.py", line 469, in blocking_read
    return self.on_inbound_frame(frame)
  File "/opt/my-program/lib/python2.7/site-packages/amqp/method_framing.py", line 88, in on_frame
    callback(channel, msg.frame_method, msg.frame_args, msg)
  File "/opt/my-program/lib/python2.7/site-packages/amqp/connection.py", line 473, in on_inbound_method
    method_sig, payload, content,
  File "/opt/my-program/lib/python2.7/site-packages/amqp/abstract_channel.py", line 142, in dispatch_method
    listener(*args)
  File "/opt/my-program/lib/python2.7/site-packages/amqp/channel.py", line 1613, in _on_basic_deliver
    fun(msg)
  File "/opt/my-program/lib/python2.7/site-packages/kombu/messaging.py", line 623, in _receive_callback
    return on_m(message) if on_m else self.receive(decoded, message)
  File "/opt/my-program/lib/python2.7/site-packages/kombu/messaging.py", line 588, in receive
    raise NotImplementedError('Consumer does not have any callbacks')
NotImplementedError: Consumer does not have any callbacks
队列的定义:

some_id = 1

class SetQueue(bootsteps.StartStopStep):
    requires = ('celery.worker.consumer:Tasks', )

    def __init__(self, parent, **kwargs):
        self.my_queue = kwargs.get('my_queue')

    def start(self, parent):
        if self.my_queue:
            parent.cancel_task_queue(app.conf.CELERY_DEFAULT_QUEUE)
            parent.add_task_queue('{}.{}'.format(some_id, self.my_queue))

class SetHostname(bootsteps.StartStopStep):
    def __init__(self, parent, **kwargs):
        self.my_queue = kwargs.get('my_queue')
        parent.hostname = '{}@{}'.format(self.my_queue, some_id)

def my_custom_queue(parser):
    parser.add_argument(
        '--my-queue', help='Task queue base name.', type=str
    )

app.user_options['worker'].add(my_custom_queue)
app.steps['worker'].add(SetHostname)
app.steps['consumer'].add(SetQueue)
我很难找到我丢失的东西

我在whats new中发现了以下内容

工人不再有一个队列,因为它现在是多余的。

思考可能是相关的,但不知道这意味着什么

提前谢谢你的帮助

更新2017-02-24 试图进一步调试此问题时,我发现只有当它从远程队列使用时才会发生错误

这是我们从远程消费的时候

[2017-02-24 16:45:02,059: INFO/MainProcess] Connected to amqp://<user>:**@<remote_ip>:5672//
[2017-02-24 16:45:02,079: INFO/MainProcess] mingle: searching for neighbors
[2017-02-24 16:45:03,156: INFO/MainProcess] mingle: sync with 10 nodes
[2017-02-24 16:45:03,156: INFO/MainProcess] mingle: sync complete
[2017-02-24 16:45:03,176: INFO/MainProcess] Canceling queue celery
[2017-02-24 16:45:03,184: INFO/MainProcess] Started consuming from 1.my_queue
[2017-02-24 16:45:03,192: CRITICAL/MainProcess] Unrecoverable error: NotImplementedError(u'Consumer does not have any callbacks',)
[2017-02-24 16:45:02059:INFO/MainProcess]已连接到amqp:/:**@:5672//
[2017-02-24 16:45:02079:INFO/MainProcess]mingle:搜索邻居
[2017-02-24 16:45:03156:INFO/MainProcess]混合:与10个节点同步
[2017-02-24 16:45:03156:INFO/MainProcess]混合:同步完成
[2017-02-24 16:45:03176:INFO/MainProcess]取消排队芹菜
[2017-02-24 16:45:03184:INFO/MainProcess]已从1.my_队列开始消费
[2017-02-24 16:45:03192:CRITICAL/MainProcess]不可恢复的错误:NotImplementedError(u‘使用者没有任何回调’,)
这是我们从本地消费的时候

[2017-02-24 17:31:35,597: INFO/MainProcess] Connected to amqp://<user>:**@localhost:5672//
[2017-02-24 17:31:35,607: INFO/MainProcess] mingle: searching for neighbors
[2017-02-24 17:31:36,623: INFO/MainProcess] mingle: sync with 1 nodes
[2017-02-24 17:31:36,623: INFO/MainProcess] mingle: sync complete
[2017-02-24 17:31:36,626: INFO/MainProcess] Canceling queue celery
[2017-02-24 17:31:36,628: INFO/MainProcess] Started consuming from 1.my_queue
[2017-02-24 17:31:36,634: INFO/MainProcess] my_queue@1 ready.
[2017-02-24 17:31:36,638: INFO/MainProcess] Received task: <a_task>[4a25a5d2-933d-4111-9dca-b99187ffa757]  ETA:[2017-02-24 20:31:27.514538+00:00]
[2017-02-24 17:31:35597:INFO/MainProcess]已连接到amqp://:**@localhost:5672//
[2017-02-24 17:31:35607:INFO/MainProcess]mingle:搜索邻居
[2017-02-24 17:31:36623:INFO/MainProcess]混合:与1个节点同步
[2017-02-24 17:31:36623:INFO/MainProcess]混合:同步完成
[2017-02-24 17:31:36626:INFO/MainProcess]取消排队芹菜
[2017-02-24 17:31:36628:INFO/MainProcess]已从1.my_队列开始使用
[2017-02-2417:31:36634:INFO/MainProcess]我的_queue@1准备好的
[2017-02-24 17:31:36638:INFO/MainProcess]收到的任务:[4a25a5d2-933d-4111-9dca-b99187ffa757]预计到达时间:[2017-02-24 20:31:27.514538+00:00]
在我如何管理消费者工人方面没有区别。它仅与队列位置不同