Как продолжить выполнение моей программы, даже если мой клиент MQTT не подключается?

Селектор CSS « General Sibling Combinator » может быть использован для того, что вы хотите:

E ~ F {
    property: value;
}

Это соответствует любому элементу F, которому предшествует E ].

2
задан Laksh Jaisinghani 28 March 2019 в 04:21
поделиться

1 ответ

Редактировать: я запустил ваш код на своем конце, и примерно через 30 секунд я получил исключение TimeoutError: "A connection attempt failed because the connected party did not properly respond after a period of time". Вам необходимо обработать это исключение в своем коде, чтобы программа продолжала работать, даже если она не может подключиться:

try:
    client.connect("118.138.47.99", 1883, 60)
    client.loop_forever()
except:
    print("failed to connect, moving on")

print("rest of the code here")

Это выводит:

failed to connect, moving on
rest of the code here

Однако, используя connect() и loop_forever() не подходит для ваших нужд, так как они блокируют функции (то есть они блокируют выполнение вашего кода и не позволяют ему делать что-либо еще). С кодом выше, если клиент успешно соединяется, print("rest of the code here") никогда не будет достигнуто из-за loop_forever().

Вместо этого попробуйте использовать connect_async() в сочетании с loop_start() для подключения неблокирующим способом (т. Е. Ваша программа может продолжать выполнять другие действия при попытке подключения в фоновом режиме):

client.connect_async("118.138.47.99", 1883, 60)
client.loop_start()

print("rest of the code here")

while True:
    time.sleep(1)
[ 1125] Это выводит rest of the code here и продолжает работать бесконечно (в бесконечном цикле while) независимо от того, было ли соединение успешным или нет.

Обратите внимание, что в вашем определении on_connect() отсутствует один аргумент. Это должно быть:

on_connect(client, userdata, flags, rc)

Также было бы неплохо проверить код возврата on_connect и подписаться только в случае успешного подключения:

[113 ]

См. https://www.eclipse.org/paho/clients/python/docs/ и http://www.steves-internet-guide.com/client-connections. -python-MQTT / .

Для быстрого тестирования успешного соединения вы можете подключиться к test.mosquitto.org (см. https://test.mosquitto.org/ ).

0
ответ дан glhr 28 March 2019 в 04:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: