在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自动化测试之连接几组测试包实例
Sep 28 Python
Python实现多线程抓取妹子图
Aug 08 Python
简单谈谈python的反射机制
Jun 28 Python
python实现关键词提取的示例讲解
Apr 28 Python
tensorflow 获取变量&打印权值的实例讲解
Jun 14 Python
python 将list转成字符串,中间用符号分隔的方法
Oct 23 Python
Python设计模式之迭代器模式原理与用法实例分析
Jan 10 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 Python
通过python实现弹窗广告拦截过程详解
Jul 10 Python
python二维键值数组生成转json的例子
Dec 06 Python
Python中求对数方法总结
Mar 10 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
May 20 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
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
编写Smarty插件在模板中直接加载数据的详细介绍
2013/06/26 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
yii去掉必填项中星号的方法
2015/12/28 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
JavaScript聚焦于第一个字段的代码
2010/10/15 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
2014/11/02 Javascript
基于ajax实现文件上传并显示进度条
2015/08/03 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
js实现prototype扩展的方法(字符串,日期,数组扩展)
2016/01/14 Javascript
详解AngularJS控制器的使用
2016/03/09 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
2017/05/31 Javascript
基于JavaScript实现评论框展开和隐藏功能
2017/08/25 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
[46:23]完美世界DOTA2联赛PWL S2 FTD vs Magma 第一场 11.20
2020/11/23 DOTA
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
2020/09/03 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
HearthSong官网:儿童户外玩具、儿童益智玩具
2017/10/16 全球购物
幼儿园教师教学反思
2014/02/06 职场文书
假面舞会策划方案
2014/05/29 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
2015年社区反邪教工作总结
2015/10/14 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android
多人盗宝《绿林侠盗》第三赛季4.5上线 跨平台实装
2022/04/03 其他游戏
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL