Я видел несколько примеров данных датчика датчика paho, затем публикуя, например, https://github.com/jamesmoulding/motion-sensor/blob/master/open.py. Ничего, что я видел, начал сетевой цикл, как это предлагается в https://eclipse.org/paho/clients/python/docs/#network-loop. Мне интересно, не нужен ли сетевой цикл для публикации? Может быть, мне нужно только, если я подписался на что-то?Сетевая петля mqtt paho не нужна?
ответ
Петля сети необходима для целого ряда вещей:
- Чтобы справиться с поступающими сообщениями
- Чтобы отправить пинг-пакеты, необходимых для поддержания соединения живого
- Чтобы обработать дополнительные пакеты, необходимые для высокая QOS
- Отправляйте сообщения, которые занимают более одного сетевого пакета (например, больше, чем локальный MTU)
Пинг-сообщения нужны только в том случае, если у вас низкий уровень сообщений (менее 1 мс за период сохранения).
Учитывая вы можете запустить цикл сети в фоновом режиме в отдельном потоке в эти дни, я бы рекомендовал начать его независимо
Чтобы расширить то, что @hardillb сказал немного, его точка 2 «Для того, чтобы отправить пинг пакеты, необходимые для поддержания живого соединения ", является исключительно необходимым, если вы не публикуете со скоростью, достаточной для соответствия keepalive, которую вы устанавливаете при подключении. Другими словами, вполне возможно, что клиенту никогда не понадобится отправлять PINGREQ и, следовательно, никогда не нужно получать PINGRESP.
Однако, тем более важным является то, что невозможно гарантировать, что вызов publish()
фактически завершит отправку сообщения без использования сетевого цикла. Он может работать некоторое время, но не может завершить отправку сообщения в любое время.
Следующая версия клиента позволит вам сделать это:
m = mqttc.publish("class", "bar", qos=2)
m.wait_for_publish()
Но это будет требует, что петля сети обрабатывается в отдельном потоке, так как с loop_start()
.
- 1. Paho MQTT throws Exception
- 2. MessageArrived MQTT paho library
- 3. Paho MQTT Golang Protocol
- 4. Установить пакет paho-mqtt
- 5. paho mqtt клиентское брокерское соединение
- 6. Paho MQTT Android Service Issue
- 7. Нарушение SOP в paho mqtt
- 8. Запуск paho mqtt client loop_forever
- 9. Android MQTT - Paho Не поддерживает wss: //
- 10. Клиент Paho (MQTT) не может подключиться
- 11. MQTT Paho Python надежное повторное подключение
- 12. Служба поддержки Paho MQTT Android пробуждает активность
- 13. Как начать использовать клиент MQTT Paho JavaScript?
- 14. Paho MQTT, связанный с брокером MQXR
- 15. Eclipse Paho Mqtt - Конфигурация Spring Java
- 16. Пользователь и пароль Paho MQTT C++ connection
- 17. MQTT Eclipse Paho Android-приложение базовое
- 18. вернуть данные on_message в python paho mqtt
- 19. paho MQTT on_message возвращает смешное сообщение - python
- 20. Python Paho MQTT: Невозможно немедленно опубликовать функцию
- 21. Eclipse paho Mqtt: Получение java.io.EOF Исключение
- 22. Как использовать клиент paho mqtt в django?
- 23. Как подключиться к MQTT с драйверами Paho
- 24. Публикация и подписка с Paho Mqtt Client
- 25. Paho javascript mqtt сжатая полезная нагрузка
- 26. MessageID возвращает ноль в paho mqtt
- 27. Paho MQTT cleanSession установлен в false, но не получает сообщений
- 28. paho mqtt javascript клиент не может подписаться на тему
- 29. Не получать опубликованное сообщение от брокера MQTT в клиенте Paho
- 30. MQTT Android Paho Library не подключается к моему localhost broker
Я буду использовать сетевой контур, как было предложено. Но также обратите внимание на то, что в Интернете есть много примеров, плавающих в Интернете (в учебниках и т. Д.), Которые не используют его. Наверное, еще не укусил людей. Удивительно, если по умолчанию должно быть запущено его и заставить людей отключить его вручную. Реверс того, что сейчас. – fickas
Да, много людей, которые не читают документацию :(Я не собираюсь нарушать совместимость, изменяя поведение, это просто должно быть раздражающей случайной ошибкой для людей, которые не обрабатывают цикл. – ralight