python - 如何配置 paho mqtt 订阅以高速获取数据,例如每秒 1000 条消息
问题描述
我正在使用 python paho mqtt 客户端订阅 MQTT 代理以获取数据,并且我正在使用pubsubclient.h通过 ESP32 发布数据。
数据频率为每秒 1000 条消息。为了测试,我发布了 100000 条消息,并使用 python paho mqtt 订阅和收集数据。我测试了几次,但我从 100000 条消息中得到了 22000-30000 条消息。
这是我用来订阅经纪人的代码:
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Connected to broker")
client.subscribe("pub_test",2)
else:
print("Connection failed")
def on_message(client, userdata, message):
print (message.payload)
def updateMqtt():
client = mqtt.Client(client_id="Sathish", clean_session=False, userdata=None, transport="tcp")
#client = mqtt.Client()
client.on_connect= on_connect
print("after on connect")#attach function to callback
client.on_message= on_message
print("after on message")#attach function to callback
client.connect("192.168.3.101", port=1883)
client.loop_forever()
# client.loop_start()
updateMqtt()
解决方案
由于您在 QOS2 上订阅,因此您不会丢失代理和此代码之间的消息,因为 PubSubClient 仅支持 QOS0,因此丢失的可能性更大的是 ESP32 和代理之间
推荐阅读
- bash - 为每个文件创建一个文件夹
- python - 如何结合散点图中的两个matplotlib(python)颜色图
- perl - Perl 脚本为 awk 命令引发语法错误
- java - 在应用订单之前操作存储在 Firebase 文档字段中的值
- android - Oculus Quest 的麦克风权限
- scala - 如何使用 spark/scala 从一个数据帧中获取不在另一个数据帧中的行
- java - 使用 Google Cloud Messaging 时无法解析方法 addOnCompleteListener
- django - 根据 Django Rest Framework 中的用户组路由到不同的数据库
- php - 无法在cakephp中显示上标
- python - 在 Django 模板中使用会话身份验证在 Django 中实现 Vue RESTful API 调用