Селектор CSS « General Sibling Combinator » может быть использован для того, что вы хотите:
E ~ F {
property: value;
}
Это соответствует любому элементу F
, которому предшествует E
].
Редактировать: я запустил ваш код на своем конце, и примерно через 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
и подписаться только в случае успешного подключения:
См. 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/ ).