- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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()
我曾尝试使用 while True 语句循环并计算启动脚本和它收到消息之间耗时,但它似乎(显然)没有逃脱循环,即使它通过了消息。
有没有一种方法可以说明它连接了多长时间,当超过该时间时,就完全终止脚本?
或者,是否有一种方法(正如我之前尝试的那样)进行循环,同时考虑在循环中传递的消息?
感谢您的建议!
最佳答案
尝试这样的事情
它应该等待大约 5 秒的传入消息,然后退出。您可以通过在 while
循环之前更改值 waitTime
来调整等待时间
我用过mqtt网络循环函数只运行很短时间的版本,放在while循环里。该循环还检查耗时并在跳出循环之前彻底断开客户端。我还为收到消息时添加了一个干净的客户端导出。
#!/usr/bin/python
import sys
import json
import paho.mqtt.client as mqtt
import time
def on_message(client, userdata, msg):
if msg.topic == "discovery":
data = json.loads(msg.payload)
serial = data['serial']
print "test successful!"
client.disconnect()
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
startTime = time.time()
waitTime = 5
while True:
client.loop()
elapsedTime = time.time() - startTime
if elapsedTime > waitTime:
client.disconnect()
break
关于Python MQTT Connect 限时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41322408/
假设我有一群 N 人要乘火车旅行。我需要以最小化总门票成本的方式组织他们到售票处。如果一家人买家庭票,去同一目的地的人买团体票,成本可以降到最低。 我不知道这些人中谁是家人,他们要去哪里旅行。 我能做
限时 QQ音乐幸运狂欢PARTY 最高可抽豪华绿钻24个月 手机打开链接 登录即可参与活动 每人登录就有两次机会 分享一下活动还有一次机会 必中项目 但是抽中什么就看自己的了 反正小编抽中的都是
我有一个 Python 脚本,其中我连接到 MQTT 服务器。我希望通过我订阅的主题收到消息,但如果我没有收到消息,我想完全终止脚本。 我正在使用的脚本如下所示: #!/usr/bin/python
我有一个客户想在线销售教程视频。我已经预览了他从 CF 流式传输的教程(这是公开的)。现在我想使用 c# sdk 生成私有(private)的、有时间限制的 URL,以允许购买教程的客户在有限的时间段
如何使用 AWS SDK 创建云端签名 URL ? 这看起来确实应该很容易做到,但我就是看不到。我大体上了解它是如何工作的,并且可能会拼凑简单的 Java 代码来自己完成。 AWS SDK 没有为此提
我是一名优秀的程序员,十分优秀!