【发布时间】:2017-12-09 08:15:03
【问题描述】:
我正在尝试使用 MQTT 将消息从一个 python 脚本发送到另一个。一个脚本是出版商。第二个脚本是订阅者。我每 0.1 秒发送一次消息。
出版商:
client = mqtt.Client('DataReaderPub')
client.connect('127.0.0.1', 1883, 60)
print("MQTT parameters set.")
# Read from all files
count = 0
for i in range(1,51):
payload = "Hello world" + str(count)
client.publish(testtopic, payload, int(publisherqos))
client.loop()
count = count+1
print(count, ' msg sent: ', payload)
sleep(0.1)
订阅者:
subclient = mqtt.Client("DynamicDetectorSub")
subclient.on_message = on_message
subclient.connect('127.0.0.1')
subclient.subscribe(testtopic, int(subscriberqos))
subclient.loop_forever()
mosquitto 代理版本 - 3.1
mosquitto.conf 将最大飞行消息设置为 0,持久性为真。
发布者 QOS = 2
订阅者 QOS = 2
两个脚本中的topic = 'test'
当我在同一个脚本中运行订阅者和发布者时,消息会按预期发送和接收。但是当它们在单独的脚本中时,我没有收到所有消息,有时甚至没有消息。我先运行订阅者,然后再运行发布者。我已经尝试使用 loop.start() 和 loop.stop() 订阅用户等待几分钟。
我无法调试此问题。任何指针都会很棒!
编辑:
- 我在发布后包含了 client.loop()。 -> 和以前一样的输出
-
当我在 'on_connect' 和 'on_disconnect' 中打印出语句时,我注意到客户端 mqtt 连接已建立并几乎立即断开连接。这种情况每秒都会发生。我什至曾经收到过这条消息-
[WinError 10053] 已建立的连接被主机中的软件中止
保持活力 = 60
还有其他参数我应该看吗?
【问题讨论】:
-
编辑问题以包含发布者的完整代码。此外,如果您有来自代理的日志,请包括那些
-
另外,您同时运行多少个发布者实例?
-
只有一个发布者和一个订阅者。