在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模拟登陆类
Mar 29 Python
python生成验证码图片代码分享
Jan 28 Python
python 循环while和for in简单实例
Aug 16 Python
python实现单线程多任务非阻塞TCP服务端
Jun 13 Python
使用Django开发简单接口实现文章增删改查
May 09 Python
python实现雪花飘落效果实例讲解
Jun 18 Python
用Python开发app后端有优势吗
Jun 29 Python
Python 远程开关机的方法
Nov 18 Python
python time.strptime格式化实例详解
Feb 03 Python
使用Python webdriver图书馆抢座自动预约的正确方法
Mar 04 Python
python实现语音常用度量方法的代码详解
May 25 Python
Pytorch GPU内存占用很高,但是利用率很低如何解决
Jun 01 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下几种删除目录的方法总结
2007/08/19 PHP
PHP中对缓冲区的控制实现代码
2013/09/29 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
2014/06/25 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
2016/05/06 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
2016/10/13 PHP
jquery 框架使用教程 AJAX篇
2009/10/11 Javascript
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
2010/05/22 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
js bind 函数 使用闭包保存执行上下文
2011/12/26 Javascript
JSON.stringify 语法实例讲解
2012/03/14 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
创建、调用JavaScript对象的方法集锦
2014/12/24 Javascript
AngularJS语法详解
2015/01/23 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
使用validate.js实现表单数据提交前的验证方法
2018/09/04 Javascript
js字符串倒序的实例代码
2018/11/30 Javascript
js实现无缝轮播图插件封装
2020/07/31 Javascript
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
python统计日志ip访问数的方法
2015/07/06 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
2016/03/30 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
Pycharm调试程序技巧小结
2020/08/08 Python
大学生职业生涯规划书模板
2014/01/18 职场文书
面试后的英文感谢信
2014/02/01 职场文书
美容院店长岗位职责
2014/04/08 职场文书
工程项目经理任命书
2014/06/05 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书
如何利用pygame实现打飞机小游戏
2021/05/30 Python
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
vue-router中hash模式与history模式的区别
2021/06/23 Vue.js
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis