8、监测数据采集物联网应用开发步骤(6)

监测数据采集物联网应用开发步骤(5.3)

定时器插件化开发

com.zxy.common.Com_Para.py中添加如下内容

#定时器正在运行标签
bTimeFlag = False
#定时器插件拦截器
TimeREFLECT_IN_CLASS = "com.plugins.usereflect.testCustTimeReflectClass1"

创建自定义定时器执行类com.zxy.taskhandler.TimeTask.py

#! python3
# -*- coding: utf-8 -
'''
Created on 2017年05月10日
@author: zxyong 13738196011
'''import datetime,importlib,threading,time
from com.zxy.common import Com_Para
from com.zxy.z_debug import z_debug#监测数据采集物联网应用--自定义定时器
class TimeTask(z_debug):# rundatetime固定时间执行 delay延迟多少秒一次性执行 Interval定时循环执行sleeps(时间)def __init__(self, rundatetime, delay, Interval, sleeps, sname):self.rundatetime = rundatetimeself.delay = delayself.Interval = Intervalself.sleeps = sleepsself.sname = sname# 定时执行程序def stimedo(self):Com_Para.bTimeFlag = Trueself.runTask()Com_Para.bTimeFlag = False#线程调用def run(self):t = threading.Thread(target=self.show, name=self.sname)t.start()#插件类反射调用def RunReflectInClass(self):#定时任务拦截器if Com_Para.TimeREFLECT_IN_CLASS != "":try:objC = importlib.import_module(Com_Para.TimeREFLECT_IN_CLASS) #对模块进行导入                objName = Com_Para.TimeREFLECT_IN_CLASS.split(".")objN = getattr(objC,objName[len(objName) - 1])if hasattr(objN,"strContinue"):#传入参数#setattr(objN,"strResult",strResult)fun_us = getattr(objN,"init_start")fun_us(objN)#获取参数#temResult = getattr(objN,"strResult")#temContinue = getattr(objN,"strContinue")except Exception as e:if str(type(self)) == "<class 'type'>":self.debug_in(self,repr(e)+"=>"+str(e.__traceback__.tb_lineno))#打印异常信息else:self.debug_in(repr(e)+"=>"+str(e.__traceback__.tb_lineno))#打印异常信息finally:pass#执行任务def runTask(self):      try: #定时器插件调用self.RunReflectInClass()except Exception as e:if str(type(self)) == "<class 'type'>":self.debug_in(self,repr(e)+"=>"+str(e.__traceback__.tb_lineno))#打印异常信息else:self.debug_in(repr(e)+"=>"+str(e.__traceback__.tb_lineno))#打印异常信息finally:passdef show(self):starttime = datetime.datetime.now()#固定时间开始执行if self.rundatetime != 0 :while True:starttime = datetime.datetime.now()if starttime > self.rundatetime  and not Com_Para.bTimeFlag :self.stimedo()breakelse:time.sleep(self.sleeps)#延迟多少秒执行if self.delay != 0:endtime = datetime.datetime.now() + datetime.timedelta(seconds=self.delay)while True:starttime = datetime.datetime.now()if starttime >= endtime and not Com_Para.bTimeFlag:self.stimedo()breakelse:time.sleep(self.sleeps)#定时循环执行if self.Interval != 0:endtime = starttime + datetime.timedelta(seconds=self.Interval)while True:starttime = datetime.datetime.now()if starttime >= endtime and not Com_Para.bTimeFlag:if starttime >= (endtime + datetime.timedelta(seconds=self.Interval)):endtime = endtime + 2*datetime.timedelta(seconds=self.Interval)else:endtime = endtime + datetime.timedelta(seconds=self.Interval)self.stimedo()elif endtime > (starttime + datetime.timedelta(seconds=10 * self.Interval)):endtime = datetime.datetime.now() + datetime.timedelta(seconds=self.Interval)else:time.sleep(self.sleeps)

创建定时器插件1  com.plugins.usereflect.testCustTimeReflectClass1.py

#! python3
# -*- coding: utf-8 -
'''
Created on 2017年05月10日
@author: zxyong 13738196011
'''from com.zxy.z_debug import z_debug
from com.zxy.common.Com_Fun import Com_Fun#监测数据采集物联网应用--定时器插件1
class testCustTimeReflectClass1(z_debug):#是否继续执行定时器 1:继续执行 0:中断执行strContinue      = "1"   #数据,传入参数strResult        = ""def __init__(self, params):passdef init_start(self):self.strResult = "定时器1111执行任务数据输出:"+Com_Fun.GetTimeDef()print(self.strResult)

创建定时器插件2  com.plugins.usereflect.testCustTimeReflectClass2.py

#! python3
# -*- coding: utf-8 -
'''
Created on 2017年05月10日
@author: zxyong 13738196011
'''from com.zxy.z_debug import z_debug
from com.zxy.common.Com_Fun import Com_Fun#监测数据采集物联网应用--定时器插件2
class testCustTimeReflectClass2(z_debug):#是否继续执行定时器 1:继续执行 0:中断执行strContinue      = "1"   #数据,传入参数strResult        = ""def __init__(self, params):passdef init_start(self):self.strResult = "定时器2222执行任务数据输出:"+Com_Fun.GetTimeDef()print(self.strResult)

定时器测试案例MonitorDataCmd.py主文件中编写:

from com.zxy.taskhandler.TimeTask import TimeTask

在主文件中定义线程测试类

#定义线程测试类
class ThreadTest(object):#定义线程更改定时器插件类def ChangeTimeREFLECT(self):time.sleep(13)Com_Para.TimeREFLECT_IN_CLASS = "com.plugins.usereflect.testCustTimeReflectClass2"if __name__ == '__main__':下编写#定时器执行案例,定义定时器插件类名Com_Para.TimeREFLECT_IN_CLASS = "com.plugins.usereflect.testCustTimeReflectClass1"#         #固定时间执行,当前时间延迟25秒
#         times = Com_Fun.DateTimeAdd(datetime.datetime.now(),"S",25)
#         print("定时器固定时间执行开始:"+Com_Fun.GetTimeDef())
#         tt = TimeTask(times, 0, 5, 0.1, "TimeTask")
#         tt.run()#         #当前时间延迟15秒
#         print("定时器延迟15秒执行开始:"+Com_Fun.GetTimeDef())
#         tt = TimeTask(0, 15, 5, 0.1, "TimeTask")
#         tt.run()#         print("定时器循环秒执行开始:"+Com_Fun.GetTimeDef())
#         tt = TimeTask(0, 0, 5, 0.1, "TimeTask")
#         tt.run()
# 
#         #延迟13秒变更定时器插件试试
#         trt = ThreadTest()
#         t = threading.Thread(target=trt.ChangeTimeREFLECT, name="zxyong_ChangeTimeREFLECT")
#         t.start()

测试请将对应注释取消

固定时间执测试结果1:

延迟时间执行测试结果2:

执行13秒之后变更定时器插件测试结果3:

  1. 监测数据采集物联网应用开发步骤(7)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/63338.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue v-on 艾特@

vue v-on 内联代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</titl…

多目标应用:基于多目标人工蜂鸟算法(MOAHA)的微电网多目标优化调度MATLAB

一、微网系统运行优化模型 参考文献&#xff1a; [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、多目标人工蜂鸟算法MOAHA 多目标人工蜂鸟算法&#xff08;multi-objective artificial hummingbird algorithm&…

构建稳定的爬虫系统:如何选择合适的HTTP代理服务商

在构建一个稳定、高效的爬虫系统中&#xff0c;选择合适的HTTP代理服务商是至关重要的一步。本文将介绍如何选取可靠且性能优秀的HTTP代理服务供应商&#xff0c;来完成搭建一个强大而稳定的爬虫系统。 1.了解不同类型和特点 -免费公开代理服务器:提供免费但可能存在限制或不…

【Linux】目录结构、路径

目录 1. 目录结构 1.1 基本概念 1.2 具体的目录结构 2. 路径 2.1 绝对路径和相对路径 2.2 特殊路径符 1. 目录结构 1.1 基本概念 Linux的目录结构是一个树形结构。 Windows系统可以拥有多个盘符&#xff0c;如 C盘、D盘、E盘。Linux没有盘符这个概念&#xff0c;只有一…

一阴一阳之谓道,乃自然规律也!

阴阳&#xff0c;在我们国家&#xff0c;是一切传统文化的基础。作为一个有着五千年文化的国家&#xff0c;作为世界上仅存的四大文明古国&#xff0c;峰民觉得&#xff0c;我们的传统文化&#xff0c;不能被当成迷信&#xff0c;慢慢的没落。 有时&#xff0c;不得不承认&…

【100天精通python】Day50:python web编程_Django框架从安装到使用

目录 1 安装Django Web框架 2 创建一个Django 项目 3 数据模型 3.1 在应用程序的 models.py 文件中定义数据模 3.2 创建模型的迁移文件并应用 3.2.1 查询模型对象&#xff1a; 3.2.2 创建新模型对象&#xff1a; 3.2.3 更新模型对象&#xff1a; 3.2.4 删除模型对象&a…

BDCC - 闲聊数据仓库的架构

文章目录 典型数据仓库架构图数据仓库ETL vs ELTETLELT区别联系 数据仓库分层&#xff08;1&#xff09;数据仓库ODS层&#xff08;2&#xff09;数据仓库CDM层DWD数据明细层DWS数据汇总层 &#xff08;3&#xff09;数据仓库ADS层 典型数据仓库架构图 按自下而上的顺序&#x…

plsql ebs 工作中的简单笔记

工作流中给系统界面发送消息&#xff1a; PROCEDURE wf_notify(p_sender IN VARCHAR2 DEFAULT SYSADMIN,p_receiver IN VARCHAR2,p_subject IN VARCHAR2,p_content_text IN VARCHAR2);PROCEDURE wf_notify(p_sender IN VARCHAR2 DEFAULT SYSADMIN,---发送…

外贸企业如何借助CRM提升企业发展?

外贸企业竞争激烈&#xff0c;提高自身竞争力&#xff0c;扩大海外业务市场&#xff0c;是每个外贸企业的目标。为了实现这一目标&#xff0c;不少外贸企业借助CRM系统&#xff0c;优化业务流程&#xff0c;管理维护客户&#xff0c;从而实现可持续发展。那么&#xff0c;外贸企…

2023年高教社杯数学建模思路 - 案例:异常检测

文章目录 赛题思路一、简介 -- 关于异常检测异常检测监督学习 二、异常检测算法2. 箱线图分析3. 基于距离/密度4. 基于划分思想 建模资料 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 一、简介 – 关于异常…

MySQL复合查询

文章目录 MySQL复合查询1. 基本查询回顾(1) 查询工资高于500或岗位为MANAGER的雇员&#xff0c;同时还要满足他们的姓名首字母为大写的J(2) 按照部门号升序而雇员的工资降序排序(3) 使用年薪进行降序排序(4) 显示工资最高的员工的名字和工作岗位(5) 显示工资高于平均工资的员工…

无涯教程-Android Online Test函数

Android在线测试模拟了真正的在线认证考试。您将看到基于 Android概念的多项选择题(MCQ),将为您提供四个options。您将为该问题选择最合适的答案,然后继续进行下一个问题,而不会浪费时间。完成完整的考试后,您将获得在线考试分数。 总问题数-20 最长时间-20分钟 Start Test …

Configuring HSRP(Hot Standby Routing Protocol)

网络冗余架构设计中&#xff0c;必不可少的就是网关冗余功能&#xff0c;而很多核心网中都会用到HSRP(Hot Standby Routing Protocol)协议来实现这个功能。 热备份路由协议&#xff08;HSRP&#xff09; 热备份路由协议&#xff08;HSRP&#xff09;是思科公司专有的协议&…

实现不同局域网间的文件共享和端口映射,使用Python自带的HTTP服务

文章目录 1. 前言2. 本地文件服务器搭建2.1 python的安装和设置2.2 cpolar的安装和注册 3. 本地文件服务器的发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 数据共享作为和连接作为互联网的基础应用&#xff0c;不仅在商业和办公场景有广泛的应用…

【Nacos】使用Nacos进行服务发现、配置管理

Nacos Nacos是 Dynamic Naming and Configuration Service 的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 版本说明&#xff1a;版本说明 alibaba/spring-cloud-alibaba Wiki GitHub <properties><java.version>…

unity3d:功能验证,收集开源项目的工程合集

unity3d功能验证&#xff0c;和收集开源项目的工程合集 目录持续更新地址 【腾讯文档】UnityForTest目录 https://docs.qq.com/doc/DWm9HSkVhTGdyUUVo 源码 https://github.com/luoyikun/UnityForTest 动画 创建骨骼动画 BoneAnimation场景 代码创建Mesh&#xff0c;骨骼…

Flask项目请求图片资源返回403错误

问题 解决 在图片url前缀前加 "https://images.weserv.nl/?url" 参考 如何解决访问外部图片返回 403 Forbidden 错误 - 知乎 vue中请求接口会自动带上本地ip_vite打包后请求地址为什么带本地地址_夜月晓晓的博客-CSDN博客

CSS判断手机暗黑模式

手机有个功能到了晚上会自动变成深色也就是暗黑模式.这种情况下网页会自动变颜色.如果想自由控制暗黑模式下的html样式的话,可以用如下方式: media (prefers-color-scheme: dark) {/*html, body {*//*filter: invert(1) hue-rotate(180deg);*//*}*/.maill{margin-left: 0;marg…

【ES系列】(一)简介与安装

首发博客地址 首发博客地址[1] 系列文章地址[2] 教学视频[3] 为什么要学习 ES? 强大的全文搜索和检索功能&#xff1a;Elasticsearch 是一个开源的分布式搜索和分析引擎&#xff0c;使用倒排索引和分布式计算等技术&#xff0c;提供了强大的全文搜索和检索功能。学习 ES 可以掌…

【FreeRTOS】互斥量的使用与逐步实现

在FreeRTOS中&#xff0c;互斥量是一种用于保护共享资源的同步机制。它通过二进制信号量的方式&#xff0c;确保在任意时刻只有一个任务可以获取互斥量并访问共享资源&#xff0c;其他任务将被阻塞。使用互斥量的基本步骤包括创建互斥量、获取互斥量、访问共享资源和释放互斥量…