在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程序设计入门(4)模块和包
Jun 16 Python
在python中使用正则表达式查找可嵌套字符串组
Oct 24 Python
Python中sort和sorted函数代码解析
Jan 25 Python
pandas apply 函数 实现多进程的示例讲解
Apr 20 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
python3通过selenium爬虫获取到dj商品的实例代码
Apr 25 Python
django 消息框架 message使用详解
Jul 22 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
Python IDE Pycharm中的快捷键列表用法
Aug 08 Python
Python3视频转字符动画的实例代码
Aug 29 Python
python读取Kafka实例
Dec 23 Python
Python利器openpyxl之操作excel表格
Apr 17 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生成不重复标识符的方法
2014/11/21 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
Javascript常考语句107条收集
2010/03/09 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
js时间比较示例分享(日期比较)
2014/03/05 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
vue实现自定义多选与单选的答题功能
2018/07/05 Javascript
vue2中,根据list的id进入对应的详情页并修改title方法
2018/08/24 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
JSONP解决JS跨域问题的实现
2020/05/25 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
Python Web程序搭建简单的Web服务器
2019/07/31 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
便携式太阳能系统的创新者:GOAL ZERO
2018/02/04 全球购物
毕业自我鉴定
2013/11/05 职场文书
新学期决心书
2014/03/11 职场文书
党员实事承诺书
2014/03/26 职场文书
寄语是什么意思
2014/04/10 职场文书
员工工作及收入证明
2014/10/28 职场文书
2014保险公司个人工作总结
2014/12/09 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
2015年党性分析材料
2014/12/19 职场文书
入党介绍人意见2015
2015/06/01 职场文书
公司业务员管理制度
2015/08/05 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript