我有一个Python脚本,其中我连接到一个MQTT服务器。我希望通过订阅的主题获得一条消息,但是如果我没有收到消息,我希望完全终止脚本。在
我正在处理的脚本如下所示:
#!/usr/bin/python
import sys
import json
import paho.mqtt.client as mqtt
def on_message(client, userdata, msg):
if msg.topic == "discovery":
data = json.loads(msg.payload)
serial = data['serial']
print "test successful!"
sys.exit(0)
def on_connect(client, userdata, flags, rc):
client.subscribe([("discovery", 2)])
client = mqtt.Client()
try:
client.connect('localhost', 4444)
except:
print "ERROR: Could not connect to MQTT
client.on_connect = on_connect
client.on_message = on_message
client.loop_forever()
我尝试过使用whiletrue语句循环并计算从启动脚本到获取消息之间的时间,但它似乎(显然)无法逃过循环,即使它获得消息。在
有没有一种方法可以告诉我它连接了多长时间,当它超过这个时间时,就完全终止脚本?在
或者,是否有一种方法(正如我之前所尝试的那样)在循环中同时考虑消息的传递?在
谢谢你的建议!在
试试这个
它应该等待大约5秒的传入消息,然后退出。您可以通过在
while
循环之前更改值waitTime
来调整等待时间我使用了mqtt网络循环函数的版本,该函数只运行很短时间,并将其放入while循环中。循环还检查运行时间,并在退出循环之前干净地断开客户端。我还为收到消息时添加了一个干净的客户端出口。在
相关问题 更多 >
编程相关推荐