在单线程 python 应用程序中一起使用 http 和 mqtt
Using http and mqtt together in a single threaded python app
我是网络和 mqtt 编程的新手,我正在开发一个使用 mqtt(通过 hivemq 或 rabbitmq 代理)的 python 应用程序,还需要为客户端实现 http rest api .
我意识到使用 python bottle 框架很容易提供一个简单的 http 服务器,但是 bottle 和 mqtt 都有它们的事件循环,我如何组合这两个事件循环,我想要一个线程应用程序以避免复杂性。
我对 bottle 不熟悉,但快速浏览一下文档,除了使用 run()
函数外,似乎没有其他方法可以启动它的事件循环。
Paho 提供了一个 loop_start()
将启动它自己的后台线程 运行 MQTT 网络事件循环。
鉴于似乎无法手动 运行 瓶子循环我建议在 run()
之前调用 loop_start()
并让应用程序 运行 在 2 个单独的线程上因为没有办法将它们结合起来,而且您可能也不想这样做。
唯一需要注意的是 MQTT 订阅是否会更新 REST 服务发送的数据,但只要不是流式传输大量数据,就不太可能成为问题。
我是网络和 mqtt 编程的新手,我正在开发一个使用 mqtt(通过 hivemq 或 rabbitmq 代理)的 python 应用程序,还需要为客户端实现 http rest api .
我意识到使用 python bottle 框架很容易提供一个简单的 http 服务器,但是 bottle 和 mqtt 都有它们的事件循环,我如何组合这两个事件循环,我想要一个线程应用程序以避免复杂性。
我对 bottle 不熟悉,但快速浏览一下文档,除了使用 run()
函数外,似乎没有其他方法可以启动它的事件循环。
Paho 提供了一个 loop_start()
将启动它自己的后台线程 运行 MQTT 网络事件循环。
鉴于似乎无法手动 运行 瓶子循环我建议在 run()
之前调用 loop_start()
并让应用程序 运行 在 2 个单独的线程上因为没有办法将它们结合起来,而且您可能也不想这样做。
唯一需要注意的是 MQTT 订阅是否会更新 REST 服务发送的数据,但只要不是流式传输大量数据,就不太可能成为问题。