我使用下面的代码通过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 onhw-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"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'未定义
不太确定我从哪里得到异常。尽管我得到了异常,但我确实看到了代理上的数据,所以我不确定
是什么。编辑:我使用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,因为它已经有很长一段时间没有得到支持了。