Я пишу клиент python с использованием paho-mqtt, я использую publish() для публикации данных с использованием установленного соединения.Клиент Python Paho публикует сбои, по крайней мере, с 1 пропущенным publsh
mqttc = mqtt.Client()
...
while True:
...
rc = mqttc.publish(topic, data)
Но сервер будет время меня. Тем не менее, я не получаю таймаут, пока я не вызову публикацию снова.
Я получил гс в порядке:
(0, 1)
delay
(0, 2)
[Errno 32] Broken pipe
(1, 3)
Использование Wireshark, я вижу, что, как я публикую 2-й раз, соединение сбрасывается. Но я не получаю «Broken pipe» до тех пор, пока не опубликует третью публикацию. Я попробовал поставить callback on_disconnect, и он также вызывается только после 3-го опубликования.
Каков правильный способ опубликовать публикацию и получить уведомление о том, что публикация не удалась немедленно? Кроме того, сообщение «Broken pipe» не является исключением. Как предотвратить его печать?
Было бы замечательно, если вы предоставляете минимальный функциональный пример. В вашем вопросе отсутствует много строк, и некоторые из них могут выявить, где проблема. Вопрос: вы вызываете где-нибудь ** любую функцию 'loop' **? Цитата из doc: ** Эти функции являются движущей силой для клиента. Если они не вызываются, входящие сетевые данные не будут обрабатываться, и исходящие сетевые данные могут не отправляться своевременно. ** –