python - MQTT - 有没有办法检查客户端是否仍然连接

标签 python mqtt

有没有办法检查客户端是否仍然连接到 MQTT 代理?

有点像

if client.isConnected(): # for example
    # if True then do stuff

编辑:在我的 Raspberry Pi 停止接收来自客户端的实例时,尽管它仍在运行(从外观上看,代码仍在显示更新的结果)。

这里是代码,因为我可能做错了什么:

client = mqtt.Client()
client.connect(address, 1883, 60)

while True:
    data = getdata()
    client.publish("$ahmed/",data,0)
    time.sleep(0.2)

问题是我不在,所以我什至不确定它为什么停下来!只有当我重新启动我的代理时,它才会再次开始接收。

最佳答案

您可以在 on_connect 中激活一个标志并在 on_disconnect 中停用它。通过这种方式,您可以知道客户端是否已连接。

import paho.mqtt.client as mqtt

flag_connected = 0

def on_connect(client, userdata, flags, rc):
   global flag_connected
   flag_connected = 1

def on_disconnect(client, userdata, rc):
   global flag_connected
   flag_connected = 0

client = mqtt.Client()
client.on_connect = on_connect
client.on_disconnect = on_disconnect
client.connect(server,port)
client.loop_forever()
if flag_connected == 1:
   # Publish message
else:
   # Wait to reconnect

关于python - MQTT - 有没有办法检查客户端是否仍然连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36093078/

相关文章:

Python 没有操作码缓存器?

python - Pandas 和 PanelOLS : Only 2 level multiindex are supported

mqtt - 横向扩展 mosquitto 代理

node.js - mqtt.js 自动关闭连接

javascript - 帕霍 MQTT : Possible importing error?

python - 对于循环,os.listdir() 无法正常工作

python - 更改小部件中的图像 - Kivy - Python

python - 有没有办法在设置有意义的默认值时确定是否在命令行中指定了参数?

mqtt - mqtt 支持一对多和多对一吗?

plugins - RabbitMQ MQTT 插件无法启动