在Django中使用MQTT的方法


Posted in Python onMay 10, 2021

安装MQTT

Python环境下安装MQTT也很简单,需要注意的就是不要输错命令
在Python3环境下安装Python MQTT的命令是:

pip3 install paho-mqtt

使用Python MQTT

编写Python MQTT脚本
代码如下:

# 为了能在外部脚本中调用Django ORM模型,必须配置脚本环境变量,将脚本注册到Django的环境变量中
import os, sys
import django
# 第一个参数固定,第二个参数是工程名称.settings
os.environ.setdefault('DJANGO_SETTING_MODULE', 'my_django.settings')
django.setup()

# 引入mqtt包
import paho.mqtt.client as mqtt
# 使用独立线程运行
from threading import Thread
from app名 import models
import time
import json

# 建立mqtt连接
def on_connect(client, userdata, flag, rc):
    print("Connect with the result code " + str(rc))
    client.subscribe('test/#', qos=2)

# 接收、处理mqtt消息
def on_message(client, userdata, msg):
    out = str(msg.payload.decode('utf-8'))
    print(msg.topic)
    print(out)
    out = json.loads(out)

    # 收到消息后执行任务
    if msg.topic == 'test/newdata':
        print(out)

# mqtt客户端启动函数
def mqttfunction():
    global client
    # 使用loop_start 可以避免阻塞Django进程,使用loop_forever()可能会阻塞系统进程
    # client.loop_start()
    # client.loop_forever() 有掉线重连功能
    client.loop_forever(retry_first_connection=True)

client = mqtt.Client(client_id="test", clean_session=False)

# 启动函数
def mqtt_run():
    client.on_connect = on_connect
    client.on_message = on_message
    # 绑定 MQTT 服务器地址
    broker = '192.168.1.88'
    # MQTT服务器的端口号
    client.connect(broker, 1883, 62)
    client.username_pw_set('user', 'user')
    client.reconnect_delay_set(min_delay=1, max_delay=2000)
    # 启动
    mqttthread = Thread(target=mqttfunction)
    mqttthread.start()

# 启动 MQTT
# mqtt_run()

if __name__ == "__main__":
    mqtt_run()

在Django项目中启动脚本

在Django2.1下,只需要在 wsgi.py 中引入要执行的脚本文件,然后执行启动函数即可。
如:

from 存放MQTT脚本的模块 import 脚本名
# 假如脚本名是:mqtt_functions
mqtt_functions.mqtt_run()

到此这篇关于在Django中使用MQTT的方法的文章就介绍到这了,更多相关Django使用MQTT内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 调用DLL操作抄表机
Jan 12 Python
Python操作Oracle数据库的简单方法和封装类实例
May 07 Python
详解python中的Turtle函数库
Nov 19 Python
对Xpath 获取子标签下所有文本的方法详解
Jan 02 Python
Django如何防止定时任务并发浅析
May 14 Python
python 自定义装饰器实例详解
Jul 20 Python
解决python replace函数替换无效问题
Jan 18 Python
Python任务调度模块APScheduler使用
Apr 15 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
May 22 Python
Matplotlib.pyplot 三维绘图的实现示例
Jul 28 Python
Django配置跨域并开发测试接口
Nov 04 Python
Python 全局空间和局部空间
Apr 06 Python
十个Python自动化常用操作,即拿即用
May 10 #Python
Django开发RESTful API实现增删改查(入门级)
May 10 #Python
Python中X[:,0]和X[:,1]的用法
May 10 #Python
Python Django搭建文件下载服务器的实现
详解python的内存分配机制
May 10 #Python
python-for x in range的用法(注意要点、细节)
May 10 #Python
Django显示可视化图表的实践
You might like
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
2007/08/31 Javascript
js同时按下两个方向键
2007/12/01 Javascript
JavaScript获取和设置CheckBox状态的简单方法
2013/07/05 Javascript
使图片旋转的3种解决方案
2013/11/21 Javascript
jquery map方法使用示例
2014/04/23 Javascript
React.js入门学习第一篇
2016/03/30 Javascript
Js调用Java方法并互相传参的简单实例
2016/08/11 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
2017/10/31 Javascript
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
实用Javascript调试技巧分享(小结)
2019/06/18 Javascript
layui递归实现动态左侧菜单
2019/07/26 Javascript
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
axios封装与传参示例详解
2020/10/18 Javascript
python使用htmllib分析网页内容的方法
2015/05/08 Python
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
Tornado高并发处理方法实例代码
2018/01/15 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
Python使用APScheduler实现定时任务过程解析
2019/09/11 Python
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
视光学毕业生自荐书范文
2014/02/13 职场文书
2014年巴西世界杯口号
2014/06/05 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
环境保护建议书
2014/08/26 职场文书
出差报告怎么写
2014/11/06 职场文书
2015年店长工作总结范文
2015/04/08 职场文书
小学三年级班主任工作经验交流材料
2015/11/02 职场文书
Redis命令处理过程源码解析
2022/02/12 Redis
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers