在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标准库与第三方库详解
Jul 22 Python
详解django中使用定时任务的方法
Sep 27 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
Sep 03 Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 Python
根据tensor的名字获取变量的值方式
Jan 04 Python
python与mysql数据库交互的实现
Jan 06 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
Jun 01 Python
详解Flask前后端分离项目案例
Jul 24 Python
让你相见恨晚的十个Python骚操作
Nov 18 Python
Python 里最强的地图绘制神器
Mar 01 Python
教你用Python matplotlib库制作简单的动画
Jun 11 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
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
PHP mysql与mysqli事务使用说明 分享
2013/08/17 PHP
php求数组全排列,元素所有组合的方法总结
2017/03/14 PHP
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
2010/02/15 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
2013/05/03 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
基于 Node.js 实现前后端分离
2016/04/23 Javascript
JSONP和批量操作功能的实现方法
2016/08/21 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
vue init失败简单解决方法(终极版)
2017/12/22 Javascript
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
JS常见构造模式实例对比分析
2018/08/27 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
vue项目引入ts步骤(小结)
2019/10/31 Javascript
Javascript中的this,bind和that使用实例
2019/12/05 Javascript
小程序富文本提取图片可放大缩小
2020/05/26 Javascript
[57:36]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第三场 2月1日
2021/03/11 DOTA
python中enumerate的用法实例解析
2014/08/18 Python
详解Python中的join()函数的用法
2015/04/07 Python
Python爬虫模拟登录带验证码网站
2016/01/22 Python
利用aardio给python编写图形界面
2017/08/21 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
浅谈Python中的bs4基础
2018/10/21 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
对django后台admin下拉框进行过滤的实例
2019/07/26 Python
python输出决策树图形的例子
2019/08/09 Python
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
空气的环保标语
2014/06/12 职场文书
逃出克隆岛观后感
2015/06/09 职场文书
李强为自己工作观后感
2015/06/11 职场文书