在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 相关文章推荐
浅谈django model postgres的json字段编码问题
Jan 05 Python
对python 合并 累加两个dict的实例详解
Jan 21 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
Feb 14 Python
Python I/O与进程的详细讲解
Mar 08 Python
python3实现表白神器
Apr 09 Python
python3.7环境下安装Anaconda的教程图解
Sep 10 Python
关于python的缩进规则的知识点详解
Jun 22 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
Jan 12 Python
如何用Python徒手写线性回归
Jan 25 Python
python munch库的使用解析
May 25 Python
Python基础教程,Python入门教程(超详细)
Jun 24 Python
讲解Python实例练习逆序输出字符串
May 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
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
jQuery实现简单的间隔向上滚动效果
2015/03/09 Javascript
jquery ui resize 中border-box的bug修正
2015/04/26 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
表单验证插件Validation应用的实例讲解
2015/10/10 Javascript
js格式化输入框内金额、银行卡号
2016/02/01 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
Vue结合原生js实现自定义组件自动生成示例
2017/01/21 Javascript
Jquery实时监听input value的实例
2017/01/26 Javascript
node.js平台下的mysql数据库配置及连接
2017/03/31 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
JavaScript中undefined和null的区别
2017/05/03 Javascript
微信小程序之前台循环数据绑定
2017/08/18 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
layui动态渲染生成select的option值方法
2019/09/23 Javascript
小程序实现左滑删除的效果的实例代码
2020/10/19 Javascript
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
python3.7 的新特性详解
2019/07/25 Python
利用pandas合并多个excel的方法示例
2019/10/10 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
What is the purpose of Void class? Void类的作用是什么?
2016/10/31 面试题
Java程序员面试题
2016/09/27 面试题
CNC数控操作工岗位职责
2013/11/19 职场文书
办加油卡单位介绍信
2014/01/09 职场文书
外贸专业求职信
2014/03/09 职场文书
谢师宴答谢词
2015/01/05 职场文书
银行自荐信范文
2015/03/25 职场文书
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS