Как запустить 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()
Другие вопросы по тегам