Как запустить MQTT-клиент в фоновом режиме в Python?
Я пытаюсь подключиться к DroneKit-SITL и поддерживаю работу MQTT-Broker с loop_forever(). Всякий раз, когда я получаю сообщение через MQTT, я хочу отправлять команды дрону через API python dronekit. В то же время я хочу отправлять данные дронов другим клиентам через MQTT каждые 5 секунд.
Как я могу позволить моему dronekit-sitl-class и mqtt-broker-class взаимодействовать друг с другом? Должен ли каждый из них выполняться в потоке или процессе?
2 ответа
лучшее решение - использовать loop_start() и loop_stop() вместо loop_forever()
self._client.loop_start() # its start loop in new thread
Я исправил проблему, запустив цикл в отдельном потоке следующим образом:
clientloop_thread = Thread(target=self.connect)
clientloop_thread.start()
def connect(self):
self._client.loop_forever()