ConnectionError未定义- Python上的MQTT Paho



我使用下面的代码通过WebSocket和SSL连接到代理。代理受密码保护。我的代码-

import paho.mqtt.client as mqtt
import ssl
import time
def on_connect(client, userdata, flags, rc):
print("connected with result code "+str(rc))
def on_publish(client, userdata, mid):
print("mid: "+str(mid))
client = mqtt.Client('device', transport="websockets")
client.on_connect = on_connect
client.on_publish = on_publish
client.username_pw_set("login", "pass")
client.ws_set_options(path="/logger")
client.tls_set(ca_certs=None, certfile=None, keyfile=None, cert_reqs=ssl.CERT_REQUIRED,
tls_version=ssl.PROTOCOL_TLS, ciphers=None)
connection = False

print("Trying to connect ...")
client.connect(host="mqtt.broker.io", port=443)
connection = True
for _ in range(5):
time.sleep(1)
client.publish("some/topic", "HELLO", qos=2)
client.loop(1)
client.disconnect()

我得到的错误-

正在连接…与结果代码0连接最近一次通话):文件/home/souvik/GitLab/Embedded/demo_mqtt_auth.py",第30行client.loop(1) File "/home/souvik/.local/lib/python2.7/site-packages/paho/mqtt/client.py"第1120行,in循环返回self._loop(超时)File "/home/souvik/.local/lib/python2.7/site-packages/paho/mqtt/client.py"第1164行,在_loop中rc = self.loop_read() File "/home/souvik/.local/lib/python2.7/site-packages/paho/mqtt/client.py"第1556行,在loop_read中rc = self._packet_read() File "/home/souvik/.local/lib/python2.7/site-packages/paho/mqtt/client.py"第2373行,在_packet_read中NameError:全局名称'ConnectionError'未定义

sleepiz_one onhw-1929-diagnostics [$!]]在(eu-west-1)上花费了6s/bin/python/home/souvik/GitLab/Embedded/demo_mqtt_auth.py连接……连接结果代码0回溯(最近的调用)最后):File "/home/souvik/GitLab/Embedded/demo_mqtt_auth.py&quot30,client.loop(1) File "/home/souvik/.local/lib/python2.7/site-packages/paho/mqtt/client.py"第1120行,in循环返回self._loop(超时)File "/home/souvik/.local/lib/python2.7/site-packages/paho/mqtt/client.py"第1164行,在_loop中rc = self.loop_read() File "/home/souvik/.local/lib/python2.7/site-packages/paho/mqtt/client.py"第1556行,在loop_read中rc = self._packet_read() File "/home/souvik/.local/lib/python2.7/site-packages/paho/mqtt/client.py"第2373行,在_packet_read中NameError:全局名称'ConnectionError'未定义

不太确定我从哪里得到异常。尽管我得到了异常,但我确实看到了代理上的数据,所以我不确定

是什么。编辑:我使用paho-mqtt 1.6.1

ConnectionError在Python 3.3中被添加。

你正在运行Python 2.7,它已经停止使用3年了。

你可以把你的paho-mqtt降级到1.6.0之前的版本,因为这是第一个有这个提交引用ConnectionError的版本:

pip install paho-mqtt==1.5.1

或高达1.6.1,声称"修复Python 2.7的兼容性";:

pip install paho-mqtt==1.6.1

实际上,你应该停止使用Python 2.7,因为它已经有很长一段时间没有得到支持了。

最新更新