在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中使用partial改变方法默认参数实例
Apr 28 Python
python入门教程之识别验证码
Mar 04 Python
Python入门之三角函数sin()函数实例详解
Nov 08 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
Jul 26 Python
python+numpy+matplotalib实现梯度下降法
Aug 31 Python
浅析python中的迭代与迭代对象
Oct 08 Python
在Python中,不用while和for循环遍历列表的实例
Feb 20 Python
python递归法解决棋盘分割问题
Jul 17 Python
python之生产者消费者模型实现详解
Jul 27 Python
python命令 -u参数用法解析
Oct 24 Python
如何在 Django 模板中输出 "{{"
Jan 24 Python
Python实现UDP程序通信过程图解
May 15 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 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
PHP实现的一致性哈希算法完整实例
2015/11/14 PHP
万能的php分页类
2017/07/06 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
2019/10/30 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
ExtJS 工具栏 分页事件参数
2010/03/05 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
jQuery按需加载轮播图(web前端性能优化)
2017/02/17 Javascript
简单实现js轮播图效果
2017/07/14 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
2019/06/26 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
[00:57]林俊杰助阵DOTA2亚洲邀请赛
2015/01/28 DOTA
[50:02]完美世界DOTA2联赛PWL S2 Magma vs FTD 第三场 11.29
2020/12/03 DOTA
Python常见文件操作的函数示例代码
2011/11/15 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
Python管理Windows服务小脚本
2018/03/12 Python
python中matplotlib条件背景颜色的实现
2019/09/02 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
2019/12/18 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
2020/02/26 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
环保建议书400字
2014/05/14 职场文书
商场父亲节活动方案
2014/08/27 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
导游词怎么写
2015/02/04 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
社会实践单位意见
2015/06/05 职场文书
谢师宴学生致辞
2015/07/27 职场文书
《社戏》教学反思
2016/02/22 职场文书
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python