Python 如何在RESTAPI中使用MQTT概念?

Python 如何在RESTAPI中使用MQTT概念?,python,flask,mqtt,paho,Python,Flask,Mqtt,Paho,我有一个要求,其中将有一个POST api调用,从这里读取json数据,并在发布之前将消息发布到这个主题“/home/floor_1/room”,还需要连接到代理,然后返回一个成功响应。 项目结构: │ app.py │ config.py │ Dockerfile │ requirement.txt │ ├───app_services │ │ __init__.py │ │ │ ├───controller │ │ │ send_down_link

我有一个要求,其中将有一个POST api调用,从这里读取json数据,并在发布之前将消息发布到这个主题“/home/floor_1/room”,还需要连接到代理,然后返回一个成功响应。 项目结构:

│   app.py
│   config.py
│   Dockerfile
│   requirement.txt
│
├───app_services
│   │   __init__.py
│   │
│   ├───controller
│   │   │   send_down_link.py
│   │   │   __init__.py
│   │
│   ├───models
│   │   │   __init__.py
│   │   │
│   │   ├───database
│   │   │   │   device.py
在app.py中

from app_services import app

if __name__ == '__main__':
    app.run(host=app.config['HOST'], port=app.config['PORT'], debug=app.config['DEBUG'])
应用程序内服务/初始化.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_restful import Api
from flask_mqtt import Mqtt
from app_service.controller.send_down_link import SendDownlink

app = Flask(__name__)
db = SQLAlchemy(app)
mqtt = Mqtt(app)
api = Api(app)
api.add_resource(SendDownlink, "/api/t1/device/")
在控制器/send_down_link.py中:

class SendDownlink(Resource):
       def post(self):
         input_data =  request.get_json()
         message = input_data['message']

我想将此消息发布到“/home/floor\u 1/room”主题。所以我只想在这个“post”方法中容纳mqtt代码。我不知道如何解决这个问题。有什么建议吗?

鉴于您声明的目标是只发布一条消息,那么最简单的方法是使用Paho图书馆提供的快捷方式,它将在一次调用中处理所有连接和发布

e、 g


p、 美国主题确实不应该以一个前导的
/
开头,它在主题树的开头添加了一个不必要的
null
,并在以后尝试和扩展时打破了共享订阅等内容。

您已经尝试了什么?我已经厌倦了使用paho mqtt的单个脚本,因此,运行单个文件并连接到代理、发布消息或订阅主题很容易,但不知道如何使用flask和mqtt。通过这个[链接],但没有了解如何连接到代理以及如何在apiYeah中编写这个所有mqtt概念代码,这不仅仅是关于发布,而是关于在哪里连接到代理和所有回调,我需要在哪里声明?在客户端发布某个内容之前,所有这些都是必需的。您的问题明确地说,这只是发布一条消息。如果不是这样,编辑问题。编辑没有改变任何东西。我建议的选项在尝试发布之前已经消除了连接的所有需要。我已经厌倦了上面的建议,它可以工作,但是在这里我看不到来自mqtt的任何日志。是否有其他方法可以查看日志并连接到代理并发布消息。无论如何,非常感谢。
import paho.mqtt.publish as publish

publish.single("home/floor_1/room", "payload", hostname="mqtt.eclipse.org")