如何在 Python 后台运行 MQTT 客户端?

问题描述 投票:0回答:2

我正在尝试连接到 DroneKit-SITL 并使用 loop_forever() 保持 MQTT-Broker 运行。每当我通过 MQTT 收到消息时,我都想通过 dronekit python API 向无人机发送命令。同时,我想每 5 秒通过 MQTT 向其他客户端发送无人机数据。

如何让我的 dronekit-sitl-class 和 mqtt-broker-class 相互交互?他们每个人应该在线程或进程中运行吗?

python mosquitto dronekit-python
2个回答
1
投票

我通过像这样在单独的线程中运行循环来解决问题:

clientloop_thread = Thread(target=self.connect)
clientloop_thread.start()

def connect(self):
    self._client.loop_forever()

0
投票

更好的解决方案是使用 loop_start() 和 loop_stop() 而不是 loop_forever()

self._client.loop_start() # its start loop in new thread
© www.soinside.com 2019 - 2024. All rights reserved.