在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 变量类型及命名规则介绍
Jun 08 Python
python删除文件示例分享
Jan 28 Python
Python自动化测试工具Splinter简介和使用实例
May 13 Python
python操作CouchDB的方法
Oct 08 Python
Python中的super用法详解
May 28 Python
Python实现k-means算法
Feb 23 Python
python3.x实现发送邮件功能
May 22 Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
Oct 21 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
Jul 11 Python
利用Python产生加密表和解密表的实现方法
Oct 15 Python
python能做哪些生活有趣的事情
Sep 09 Python
Python面向对象之内置函数相关知识总结
Jun 24 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
《DOTA3》开发工作已经开始 《DOTA3》将代替《DOTA2》
2021/03/06 DOTA
PHP使用数组实现队列
2012/02/05 PHP
一个简单的网页密码登陆php代码
2012/07/17 PHP
微信公众号模板消息群发php代码示例
2016/12/29 PHP
PHP设计模式之PHP迭代器模式讲解
2019/03/22 PHP
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
JavaScript中获取未知对象属性的代码
2011/04/27 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
2014/11/08 Javascript
js在指定位置增加节点函数insertBefore()用法实例
2015/01/12 Javascript
基于Vue2的移动端开发环境搭建详解
2016/11/03 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
2017/01/11 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
vue实现组件之间传值功能示例
2018/07/13 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
2018/09/04 jQuery
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
VSCode搭建React Native环境
2020/05/07 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
python字符串str和字节数组相互转化方法
2017/03/18 Python
手把手教你python实现SVM算法
2017/12/27 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
Python配置虚拟环境图文步骤
2019/05/20 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
Django models.py应用实现过程详解
2019/07/29 Python
总结30个CSS3选择器
2017/04/13 HTML / CSS
阿迪达斯德国官方网站:adidas德国
2017/07/12 全球购物
澳大利亚领先的女帽及配饰公司:Morgan&Taylor
2019/12/01 全球购物
土木工程实习生自我鉴定
2013/09/19 职场文书
管理专员自荐信
2014/01/26 职场文书
2014年中秋寄语
2014/08/11 职场文书
班主任寄语2015
2015/02/26 职场文书
建党伟业观后感
2015/06/01 职场文书
2015七夕情人节宣传语
2015/07/14 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书
Redis数据结构之链表与字典的使用
2021/05/11 Redis