Python Paho客户端发布失败,至少丢失了1个publsh

Python Paho客户端发布失败,至少丢失了1个publsh,python,mqtt,paho,Python,Mqtt,Paho,我正在使用paho mqtt编写python客户机,我使用publish()使用已建立的连接发布数据 mqttc=mqtt.Client() ... 尽管如此: ... rc=mqttc.publish(主题、数据) 但是服务器会让我超时。但是,在再次调用publish之前,我不会获得超时 我按以下顺序获得了rc: (0,1) 延迟 (0, 2) [Errno 32]管道破裂 (1, 3) 使用Wireshark,我看到当我第二次发布时,连接被重置。但直到我第三次出版,我才得到“断管”。我试

我正在使用paho mqtt编写python客户机,我使用publish()使用已建立的连接发布数据

mqttc=mqtt.Client()
...
尽管如此:
...
rc=mqttc.publish(主题、数据)
但是服务器会让我超时。但是,在再次调用publish之前,我不会获得超时

我按以下顺序获得了rc:

(0,1)
延迟
(0, 2)
[Errno 32]管道破裂
(1, 3)
使用Wireshark,我看到当我第二次发布时,连接被重置。但直到我第三次出版,我才得到“断管”。我试着在断开连接回调时提供,它也只在第三次发布后才被调用


调用publish并立即收到发布失败通知的正确方法是什么?此外,“断管”消息似乎也不例外。如何防止打印?

正如@jan vlcinsky所暗示的那样,您需要包含一个调用,以便在后台启动客户端网络循环或在前台运行循环

例如


如果您提供最少的函数示例,那就太好了。你的问题遗漏了很多行,其中一些行可能会揭示问题出在哪里。问题:您是否在任何地方调用任何类型的
循环
函数?引用文档:这些功能是客户背后的驱动力。如果不调用它们,则不会处理传入的网络数据,也可能不会及时发送传出的网络数据。
mqttc = mqtt.Client()
mqttc.loop_start()
...
while True:
    ...
    rc = mqttc.publish(topic, data)
mqttc = mqtt.Client()
...
while True:
    ...
    rc = mqttc.publish(topic, data)
    mqttc.loop()