Python MQTT 客户端对比

本文对比了Python中的三个MQTT客户端库——paho-mqtt、HBMQTT和gmqtt。paho-mqtt由Eclipse基金会维护,文档丰富,支持MQTT 3.1和3.1.1,但不支持MQTT5.0。HBMQTT基于Python的asyncio库,适用于异步IO优化,但知名度较低且不支持MQTT5.0。gmqtt则支持MQTT5.0,代码风格友好,但仍在初级开发阶段。选择时,根据项目需求和对MQTT5.0的支持考虑。

随着人工智能、大数据兴起的,Python 凭借着优雅的语言风格,丰富的库,以及平缓的入门曲线,搭上了时代的顺风车,成为了最热门的计算机编程语言之一,开始深入到物联网等各个领域中。

Python 上有许多优秀的 MQTT 客户端库,借助它们,我们可以以极少量的代码开发一个 MQTT 客户端应用。

本文收集了三个常见的 Python MQTT 客户端库,并从库的开发、使用复杂度等几个角度进行简单的对比以方便读者进行选择。同时,文章里也提供了简单的 Python 示例,您可以将示例代码复制到编缉器中直接运行(需要 Python 3.5+,并安装对应的依赖包)。

paho-mqtt

paho-mqtt 可以说是 Python MQTT 开源客户端库中的佼佼者。它由 Eclipse 基金会主导开发,除了 Python 库以外,同样支持各大主流的编程语言,比如 C++、Java、JavaScript、Golang 等。目前 Python 版本已经实现了 3.1 和 3.1.1 MQTT 协议,在最新开发版中实现了 MQTT 5.0

在基金会的支持下,以每年一个版本的速度更新,本文发布时的最新版本为 1.5.0(于 2019 年 8 月发布)。

在 GitHub 主页上,它提供了从入门的快速实现到每一个函数的详细解读,涵盖了从初学者到高级使用者需要了解的各个部分。即使遇到超出范围的问题,在 Google 上搜索,可以得到近 20 万个相关词条,是目前最为流行的 MQTT 客户端。

得到如此多的关注度,除了稳定的代码外,还有其易用性。Paho 的接口使用非常简单优雅,您只需要少量的代码就能实现 MQTT 的订阅及消息发布。

安装

pip3 install paho-mqtt

或者

git clone https://github.com/eclipse/paho.mqtt.python
cd paho.mqtt.python
python3 setup.py install

订阅者

import paho.mqtt.client as mqtt

# 连接的回调函数
def on_connect(client, userdata, flags, rc):
    print(f"Connected with result code {rc}")
    client.subscribe("$SYS/#")
    
# 收到消息的回调函数
def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))
    
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.emqx.io", 1883, 60)
client.loop_forever()

发布者

import paho.mqtt.client as mqtt
import time
def on_connect(client, userdata, flags, rc):
    print(f"Connected with result code {rc}")
    
client = mqtt.Client()
client.on_connect = on_connect
client.connect("broker.emqx.io", 1883, 60)
for i in range(3):
    client.publish('a/b', payload=i, qos=0, retain=False)
    print(f"send {i} to a/b")
    time.sleep(1)

client.loop_forever()

甚至,你可以通过一行代码,实现订阅、发布。

import paho.mqtt.subscribe as subscribe

# 当调用这个函数时,程序会堵塞在这里,直到有一条消息发送到 paho/test/simple 主题
msg = subscribe.simple("paho/test/simple", hostname="broker.emqx.io")
print<
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值