美文网首页
mqtt python包回调分析

mqtt python包回调分析

作者: heliping_peter | 来源:发表于2019-08-23 18:46 被阅读0次
  1. mqtt的python包,回调函数比较复杂,每次在连接之前,需要先实现回调函数,回调函数的传入参数固定
def on_connect(client, userdata, flages, rc):
    print("connect with " + str(rc))

将回调函数赋给主函数

client.on_connect = on_connect
  1. 分析一下源代码
    2.1 首先查看client类的on_connect定义
 self._on_connect = None

直接定义为空,即需要外部实现
将on_connect设置为属性,也没什么奇怪

@property
    def on_connect(self):       
        return self._on_connect

    @on_connect.setter
    def on_connect(self, func):        
        with self._callback_mutex:
            self._on_connect = func

2.2 在_handle_connack函数中,发现了一些异常

with self._callback_mutex:
            if self.on_connect:
                flags_dict = {}
                flags_dict['session present'] = flags & 0x01
                with self._in_callback_mutex:
                    try:
                        self.on_connect(self, self._userdata, flags_dict, result)
                    except Exception as err:
                        self._easy_log(MQTT_LOG_ERR, 'Caught exception in on_connect: %s', err)

此处即为调用外部传入的on_connect函数

  1. 再看下_handle_connack这个函数什么情况下调用
def _packet_handle(self):
      elif cmd == CONNACK:
            return self._handle_connack()

在_packet_handle函数中调用
----> _packet_read ----> loop_read ----> loop ----> loop.start
这个路数就清楚了
先定义回调函数,然后loop.start后,开始执行。

相关文章

  • mqtt python包回调分析

    mqtt的python包,回调函数比较复杂,每次在连接之前,需要先实现回调函数,回调函数的传入参数固定 将回调函数...

  • 【MQTT】使用Wireshark分析MQTT协议

    概述 由于wireshark抓MQTT协议的包只能显示到TCP层次,要分析MQTT协议,就要添加wireshark...

  • 开源框架

    Pandas - 数据分析包Zipline - 一个Python的回测框架vnpy - 基于python的开源交易...

  • python 闭包

    python 闭包 回调函数的应用场景 一般来说设计好回调接口后,很难对接口进行修改。 1.调用框架是其他人实现的...

  • python导入包异常处理ImportError: cannot

    问题分析 Python程序执行中,出现导入第三方包失败报错,如下所示: 原因是python调用程序文件名称,与被调...

  • 【Swift】关于闭包的几种写法

    闭包 闭包是一个特殊的函数,经常用于回调 简单举个例子:在方法中定义闭包实现回调传值 尾随闭包:1.如果闭包是函数...

  • python 处理多线程返回值

    python线程池有一个回调函数,可以通过回调函数处理线程返回值,线程池的回调函数默认有一个 workWorkRe...

  • python回调函数

    通常在实际应用中有人写的框架中包含了一个回调函数,需要我们传入一个函数作为参数(这种方式不是面向切面的编程,这个我...

  • python回调函数

    散了,这里我多说了直接上代码了。导入time,模拟延时效果 创建callback函数 创建延时函数 调用,查看效果

  • Python 回调函数

    所有的进程调用test2函数,test2 输出test1对应进程里的数据 输出结果

网友评论

      本文标题:mqtt python包回调分析

      本文链接:https://www.haomeiwen.com/subject/xmztectx.html