关于python:kombu-registercallback-和-onmessage-的区别

2次阅读

共计 869 个字符,预计需要花费 3 分钟才能阅读完成。

register_callback 增加的 func 承受两个参数

from kombu.transport.pyamqp import Message

def callback(body, message: Message):
    logger.debug(type(body))
    logger.debug(message)
    logger.debug(message.body)
    message.ack()

register_callback 增加的 func 承受一个参数

from kombu.transport.pyamqp import Message

def callback(message: Message):
    logger.debug(type(body))
    logger.debug(message)
    logger.debug(message.body)
    message.ack()

相干的代码可见:

kombu/messaging.py

def _receive_callback(self, message):
    accept = self.accept
    on_m, channel, decoded = self.on_message, self.channel, None
    try:
        m2p = getattr(channel, 'message_to_python', None)
        if m2p:
            message = m2p(message)
        if accept is not None:
            message.accept = accept
        if message.errors:
            return message._reraise_error(self.on_decode_error)
        decoded = None if on_m else message.decode()
    except Exception as exc:
        if not self.on_decode_error:
            raise
        self.on_decode_error(message, exc)
    else:
        return on_m(message) if on_m else self.receive(decoded, message)
正文完
 0