ConnectionError не определен — MQTT Paho на Python

Я использую приведенный ниже код для подключения к брокеру через 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 Traceback (большинство последний звонок последний): файл "/home/souvik/GitLab/Embedded/demo_mqtt_auth.py", строка 30, в client.loop(1) Файл "/home/souvik/.local/lib/python2.7/site-packages/paho/mqtt/client.py", строка 1120, в цикле return self._loop(timeout) File "/home/souvik/.local/lib/python2.7/site-packages/paho/mqtt/client.py", строка 1164, в _loop rc = self.loop_read() Файл "/home/souvik/.local/lib/python2.7/site-packages/paho/mqtt/client.py", строка 1556, в loop_read rc = self._packet_read() Файл "/home/souvik/.local/lib/python2.7/site-packages/paho/mqtt/client.py", строка 2373, в _packet_read кроме ConnectionError как err: NameError: глобальное имя «ConnectionError» не определено

sleepiz_one на  hw-1929-диагностика [$!] на  (eu-west-1) заняла 6 секунд ❯ /bin/python /home/souvik/GitLab/Embedded/demo_mqtt_auth.py Попытка соединение ... соединение с кодом результата 0 Трассировка (последний вызов last): файл "/home/souvik/GitLab/Embedded/demo_mqtt_auth.py", строка 30, в client.loop(1) Файл "/home/souvik/.local/lib/python2.7/site-packages/paho/mqtt/client.py", строка 1120, в цикле return self._loop(timeout) File "/home/souvik/.local/lib/python2.7/site-packages/paho/mqtt/client.py", строка 1164, в _loop rc = self.loop_read() Файл "/home/souvik/.local/lib/python2.7/site-packages/paho/mqtt/client.py", строка 1556, в loop_read rc = self._packet_read() Файл "/home/souvik/.local/lib/python2.7/site-packages/paho/mqtt/client.py", строка 2373, в _packet_read кроме ConnectionError как err: NameError: глобальное имя «ConnectionError» не определено

Не слишком уверен, откуда я получаю исключение. Несмотря на то, что я получаю исключение, я вижу данные о брокере, поэтому я не уверен, что

Обновлено: я на paho-mqtt 1.6.1

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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, так как он уже давно не поддерживается.

Извините, я должен был добавить, что у меня paho-mqtt 1.6.1. Я попробую 1.5.1, чтобы увидеть, работает ли это.

Souvik Saha 04.04.2023 14:10

Другие вопросы по теме