Python MQTT,设置连接超时?

时间:2018-10-29 04:33:56

标签: python mqtt

我正在尝试创建一个函数来检查我要连接的服务器是否已启动或关闭。我可以成功连接到服务器并模拟服务器正常时会发生的情况,但是要模拟服务器停机时会发生的情况,我输入了错误的端口号,如下所示:

client = mqtt.Client()
#I have a defined on_connect function
client.on_connect = on_connect 

#Correct port number
#client.connect(url, 1883)

#Wrong port number
client.connect(url, 2000)

#Check if connection works with a small delay
client.loop_start()
sleep(4)
client.loop_stop()

端口号正确时,代码立即运行。

但是,如果端口号不正确(或服务器已关闭),则大约需要5分钟。我想加快速度,因为此代码的目的是仅检查服务器是否已启动。

我对keepAlive进行了实验,并将其设置为0.2,但似乎并没有太大影响。

我应该如何设置超时时间,以使其在4秒钟内未收到响应,而只是返回(未连接)?

1 个答案:

答案 0 :(得分:2)

仅当连接打开后,keepalive超时才会生效,它用于测量MQTT控制数据包之间的时间。

要做您需要做的事情会有些棘手。最好的方法可能是使用"2018-10-16 19:54:26.691 [RawEventProcessor (2/2)] ERROR com.qolsys.iqcloud.processing.operators.RawEventProcessor1 - processRawPanelEvent():: SerialNumber systemSerialNumber: QV01D173700428AD is not mapped to any meid. {}",2 "2018-10-16 19:54:27.074 [RawEventProcessor (2/2)] ERROR com.qolsys.iqcloud.processing.operators.RawEventProcessor1 - processRawPanelEvent():: SerialNumber systemSerialNumber: QV01D173700428AD is not mapped to any meid. {}",2 "2018-10-16 19:54:27.293 [RawEventProcessor (2/2)] ERROR com.qolsys.iqcloud.processing.operators.RawEventProcessor1 - processRawPanelEvent():: SerialNumber systemSerialNumber: QV01D173700428AD is not mapped to any meid. {}",2 "2018-10-16 19:54:27.296 [RawEventProcessor (2/2)] ERROR com.qolsys.iqcloud.processing.operators.RawEventProcessor1 - processRawPanelEvent():: SerialNumber systemSerialNumber: QV01D173700428AD is not mapped to any meid. {}",2 callback并在调用on_socket_open()

之前启动一个带有计时器的后台线程