如何在 FLASK REST API 中使用 MQTT 概念?
How to use MQTT concept in FLASK REST API?
我有一个要求,其中将有一个 POST api 调用,从中读取 json 数据并将消息发布到此主题“/home/floor_1/room”之前发布还需要连接到代理,然后 return 成功响应。
项目结构:
│ 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'])
在app_service/init.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/")
在controller/send_down_link.py:
class SendDownlink(Resource):
def post(self):
input_data = request.get_json()
message = input_data['message']
我想将此消息发布到“/home/floor_1/room”主题。所以我只想在这个 'post' 方法中容纳 mqtt 代码。不知道如何解决它。有什么建议吗?
鉴于您声明的目标只是发布一条消息,那么最简单的方法是使用 Paho 库提供的快捷方法,该方法将在一次调用中处理所有连接和发布。
https://pypi.org/project/paho-mqtt/#publish-single-example
例如
import paho.mqtt.publish as publish
publish.single("home/floor_1/room", "payload", hostname="mqtt.eclipse.org")
p.s。主题确实不应该以前导 /
开头,它会在主题树的开头添加一个不需要的 null
,并在您稍后尝试扩展内容时破坏共享订阅等内容。
我有一个要求,其中将有一个 POST api 调用,从中读取 json 数据并将消息发布到此主题“/home/floor_1/room”之前发布还需要连接到代理,然后 return 成功响应。 项目结构:
│ 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'])
在app_service/init.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/")
在controller/send_down_link.py:
class SendDownlink(Resource):
def post(self):
input_data = request.get_json()
message = input_data['message']
我想将此消息发布到“/home/floor_1/room”主题。所以我只想在这个 'post' 方法中容纳 mqtt 代码。不知道如何解决它。有什么建议吗?
鉴于您声明的目标只是发布一条消息,那么最简单的方法是使用 Paho 库提供的快捷方法,该方法将在一次调用中处理所有连接和发布。
https://pypi.org/project/paho-mqtt/#publish-single-example
例如
import paho.mqtt.publish as publish
publish.single("home/floor_1/room", "payload", hostname="mqtt.eclipse.org")
p.s。主题确实不应该以前导 /
开头,它会在主题树的开头添加一个不需要的 null
,并在您稍后尝试扩展内容时破坏共享订阅等内容。