Python MQTT, установка времени ожидания для подключения? - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь создать функцию, чтобы проверить, работает ли сервер, к которому я подключаюсь, вверх или вниз. Я могу успешно подключиться к серверу и смоделировать, что произойдет, когда сервер исправен, но для имитации того, что произойдет, когда сервер не работает, я ввел неправильный номер порта, например, так:

client = mqtt.Client()
#I have a defined on_connect function
client.on_connect = on_connect 

#Correct port number
#client.connect(url, 1883)

#Wrong port number
client.connect(url, 2000)

#Check if connection works with a small delay
client.loop_start()
sleep(4)
client.loop_stop()

Код запускается мгновенно, когда номер порта правильный.

Но если номер порта неверен (или сервер не работает), это займет примерно 5 минут. Я хотел ускорить это, потому что целью этого кода является только проверка, работает ли сервер или нет.

Я экспериментировал с keepAlive и установил его на уровне 0,2, но, похоже, это не сильно на него влияет.

Как установить тайм-аут, чтобы, если он не получил ответ, скажем, в течение 4 секунд, он просто вернулся (не подключен)?

1 Ответ

0 голосов
/ 29 октября 2018

Тайм-аут активности активности вступает в действие только после открытия соединения, он используется для измерения времени между пакетами управления MQTT.

Делать то, что вам нужно, будет немного сложнее. Наилучшим подходом, вероятно, является использование обратного вызова on_socket_open() и фонового потока с таймером, запущенным непосредственно перед вызовом client.connect()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...