在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 17 Python
Django实现图片文字同时提交的方法
May 26 Python
Pycharm编辑器技巧之自动导入模块详解
Jul 18 Python
浅析Python pandas模块输出每行中间省略号问题
Jul 03 Python
pygame游戏之旅 如何制作游戏障碍
Nov 20 Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 Python
numpy.meshgrid()理解(小结)
Aug 01 Python
TensorBoard 计算图的可视化实现
Feb 15 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
Mar 19 Python
Python 忽略文件名编码的方法
Aug 01 Python
python如何做代码性能分析
Apr 26 Python
忆童年!用Python实现愤怒的小鸟游戏
Jun 07 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入门学习的几个不错的实例代码
2008/07/13 PHP
php面向对象的方法重载两种版本比较
2008/09/08 PHP
PHP下载远程文件到本地存储的方法
2015/03/24 PHP
PHP页面跳转操作实例分析(header方法)
2016/09/28 PHP
PHP中“=>
2019/03/01 PHP
为javascript添加String.Format方法
2020/08/11 Javascript
js自定义方法通过隐藏iframe实现文件下载
2013/02/21 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
jQuery动画animate方法使用介绍
2013/05/06 Javascript
动态添加option及createElement使用示例
2014/01/26 Javascript
window resize和scroll事件的基本优化思路
2014/04/29 Javascript
jQuery validate插件实现ajax验证重复的2种方法
2016/01/22 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
2016/12/02 Javascript
Bootstrap php制作动态分页标签
2016/12/23 Javascript
AngularJS ui-router (嵌套路由)实例
2017/03/10 Javascript
Angular ElementRef简介及其使用
2018/10/01 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
2019/09/05 Javascript
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
简单说明Python中的装饰器的用法
2015/04/24 Python
Python实现的简单dns查询功能示例
2017/05/24 Python
python 利用栈和队列模拟递归的过程
2018/05/29 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
AmazeUI 平滑滚动效果的示例代码
2020/08/20 HTML / CSS
美国儿童运动鞋和服装零售商:Kids Foot Locker
2017/08/05 全球购物
韩国现代百货官网:Hmall
2018/03/21 全球购物
大专生工程监理求职信
2013/10/04 职场文书
网络营销策划方案
2014/06/04 职场文书
幼儿园教师的自我评价范文
2014/09/17 职场文书
2014年小学教师工作总结
2014/11/10 职场文书
高三化学教学反思
2016/02/22 职场文书
React 高阶组件HOC用法归纳
2021/06/13 Javascript
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python