python - 在单线程 python 应用程序中一起使用 http 和 mqtt

标签 python rabbitmq mqtt bottle hivemq

我是网络和 mqtt 编程的菜鸟,我正在开发一个使用 mqtt (通过 hivemq 或rabbitmq 代理)的 python 应用程序,并且还需要为客户端实现 http Rest api。

我意识到使用python Bottle框架很容易提供一个简单的http服务器,但是bottle和mqtt都有它们的事件循环,我如何组合这2个事件循环,我想要一个单线程应用程序以避免复杂性。

最佳答案

我对 Bottle 不熟悉,但快速浏览一下文档,除了使用 run() 函数之外,似乎没有其他方法可以启动它的事件循环。

Paho 提供了一个 loop_start() ,它将启动它自己的后台线程来运行 MQTT 网络事件循环。

鉴于似乎无法手动运行 Bottle 循环,我建议在 run() 之前调用 loop_start() 并让应用程序在 2 个单独的线程上运行因为没有办法将它们结合起来,而且你可能也不想这样做。

唯一需要注意的是 MQTT 订阅是否更新 REST 服务发送的数据,但只要不传输大量数据,就不太可能成为问题。

关于python - 在单线程 python 应用程序中一起使用 http 和 mqtt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41254715/

相关文章:

Python-3.x - 将字节数组的字符串表示形式转换回字符串

python - 从 Matplotlib 中的散点图提取数据

RabbitMQ 跨越地理距离的延迟问题

Azure IOT 中心发布订阅

python - 将混合 dict 元素与 int、字符串和 float 进行比较

python - 在 Python 列表上进行排序加 uniq 的最简洁方法是什么?

rabbitmq - 如何为RabbitMQ启用服务器端心跳?

rabbitmq - 为什么 celery 需要消息代理?

macos -/sbin/ldconfig : No such file or directory when install paho on mac

javascript - 使用 Cognito 并为 AWS IOT 创建策略时,iot :ClientId policy variable? 的值是多少