【发布时间】:2016-10-27 07:01:14
【问题描述】:
我正在使用这个 python 脚本来实现一个基本的 Paho(MQTT) 订阅者,但在某些情况下它不会调用 on_connect。
我尝试了以下,所有代码都完全相同:
- 在 Raspbery pi 中运行,在台式机 (Ubuntu) 上代理。 有效。
- 在 PC (Ubuntu) 中运行,代理在同一台 PC 上。 不起作用。
- 在一台 PC (Ubuntu) 中运行,代理在其他 PC (Ubuntu) 上。 不起作用。
- 在 PC (Ubuntu) 中运行,broker.hivemq.com 作为代理。 有效。
- 在 PC(Ubuntu)中运行,broker.hivemq.com(它的 IP)作为代理。 有效。
我也经常这样做:
- mosquitto_sub/pub 在终端中的所有先前组合。 有效。
- 所有先前组合中的官方 C++ paho 包装器。 有效。
还尝试了官网列出的所有设置方法。所以 python 的 paho 库似乎无法与我的本地代理相处,除非我从我的树莓派运行它。但是使用相同的代理可以很好地与 c++ 的 paho 库一起使用,并且如果从终端使用 MQTT。对可能发生的事情有任何想法吗?
import paho.mqtt.client as mqtt
def on_connect(mqtt_client, obj, flags, rc):
mqtt_client.subscribe("test")
print "on_connect"
def on_message(mqtt_client, obj, msg):
print "on_message"
mqtt_client = mqtt.Client()
mqtt_client.on_connect = on_connect
mqtt_client.on_message = on_message
mqtt_client.connect("127.0.0.1",1883)
mqtt_client.loop_forever()
【问题讨论】:
-
只是检查一下,当你说完全相同的代码时,你正在根据需要更改
mqtt_client.connect函数调用中的IP地址 -
是的,我会在必要时更改它。不应该这样。
标签: python ubuntu mqtt mosquitto paho