我正在尝试连接到 DroneKit-SITL 并使用 loop_forever() 保持 MQTT-Broker 运行。每当我通过 MQTT 收到消息时,我都想通过 dronekit python API 向无人机发送命令。同时,我想每 5 秒通过 MQTT 向其他客户端发送无人机数据。
如何让我的 dronekit-sitl-class 和 mqtt-broker-class 相互交互?他们每个人应该在线程或进程中运行吗?
我通过像这样在单独的线程中运行循环来解决问题:
clientloop_thread = Thread(target=self.connect)
clientloop_thread.start()
def connect(self):
self._client.loop_forever()
更好的解决方案是使用 loop_start() 和 loop_stop() 而不是 loop_forever()
self._client.loop_start() # its start loop in new thread