缺少由Qos=2发布的订阅消息

2024-04-26 13:06:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在订阅关于Qos=2的主题“确定/主题”的消息,但有时我没有通过Qos=2获得消息发布,遵循我的订阅代码:

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("OK/Topic",2)

def on_message(client, userdata, msg):
    print(" Topic : "+str(msg.topic)+"  and Message is : "+str(msg.payload))

def on_subscribe(client, userdata,mid, granted_qos):
    print "userdata : " +str(userdata)


strs="my-message-to-publish"
mqttc = mqtt.Client("Python-MQTT-Pub-Sub")
mqttc.on_connect = on_connect
mqttc.on_message = on_message
mqttc.on_subscribe = on_subscribe
mqttc.connect("IP", PORT, 60)
mqttc.start_loop()
while True:
    mqttc.publish("New/Topic",str(strs))
    print "publish message " + str(strs)
    time.sleep(1)

我的出版商关于主题“确定/主题”的代码如下:

^{pr2}$

如果我发布10条消息,我会在订阅服务器上收到7-8条消息,而不是10条 有人知道我为什么漏掉一些信息。在

谢谢。。!!!在


Tags: client消息message主题topicondefconnect
1条回答
网友
1楼 · 发布于 2024-04-26 13:06:47

在on_publish方法中调用disconnect很可能会在完整的QOS2进程干净完成之前关闭连接。在

不要使用publish和on_publish断开连接,请尝试使用单一方法在一个同步方法中执行完全连接、发布和清理:

import paho.mqtt.publish as publish

publish.single(topic, payload=None, qos=0, retain=False, hostname="localhost", port=1883, client_id="", keepalive=60, will=None, auth=None, tls=None,protocol=mqtt.MQTTv311) 

相关问题 更多 >