【Python】Flask + MQTT 实现消息订阅发布_python的flask框架连接mqtt服务器

	- [2创建py文件:`mqtt\_demo.py`](#2pymqtt_demopy_9)
	- [3.代码实现](#3_12)
	- [4.项目运行](#4_85)
+ [测试](#_89)
+ - [1、测试消息接收](#1_91)
	- [2、 测试消息发布](#2__106)
+ [扩展](#_113)

Flask + MQTT 实现消息订阅发布

准备

  • 本次项目主要使用到的库:flask_mqtt
pip install flask_mqtt

开始

1.创建Flask项目
2创建py文件:mqtt_demo.py
- *也可以直接在项目中的 `app.py` 文件进行代码编写*

在这里插入图片描述

3.代码实现
from flask import Flask, request, jsonify
from flask_mqtt import Mqtt

app = Flask(__name__)


# 代理地址
app.config['MQTT\_BROKER\_URL'] = 'broker.emqx.io'
# 端口
app.config['MQTT\_BROKER\_PORT'] = 1883
# 当需要验证用户名和密码时,请设置该项
app.config['MQTT\_USERNAME'] = 'user'
# 当需要验证用户名和密码时,请设置该项
app.config['MQTT\_PASSWORD'] = '123456'
# 设置心跳时间,单位为秒
app.config['MQTT\_KEEPALIVE'] = 60
# 如果服务器支持 TLS,则设置为 True
app.config['MQTT\_TLS\_ENABLED'] = False
# 主题
topic = '/flask/mqtt'
# 实例化
mqtt_client = Mqtt(app)


@app.route('/')
def index():
    # 初始路由
    return "Welcome mqtt\_flask"


@mqtt\_client.on\_connect()
def handle\_connect(client, userdata, flags, rc):
    """连接回调函数"""
    if rc == 0:
        print('Connected successfully')
        # 订阅主题
        mqtt_client.subscribe(topic)
    else:
        # 连接失败
        print('Bad connection. Code:', rc)


@mqtt\_client.on\_message()
def handle\_mqtt\_message(client, userdata, message):
    """ 消息回调函数 """
    # 定义接受到的消息
    data = dict(
        # 主题
        topic=message.topic,
        # 内容
        payload=message.payload.decode()
    )
    # 打印输出接收到的消息
    print('Received message on topic: {topic} with payload: {payload}'.format(\*\*data))


@app.route('/publish', methods=['POST'])
def publish\_message():
    """ 消息发布接口(实际应用中,该接口可能需要处理一些复杂业务逻辑) """
    # 格式化数据
    request_data = request.get_json()
    # 发布消息
    publish_result = mqtt_client.publish(request_data['topic'], request_data['msg'])

    return jsonify({'code': publish_result[0]})


if __name__ == '\_\_main\_\_':
    app.run()


4.项目运行
  • 运行项目前可在Pycharm中设置hostport
    在这里插入图片描述
  • 设置好后直接运行项目

测试

使用MQTTX进行消息测试

1、测试消息接收
  • 创建连接

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

点,真正体系化!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值