python装饰器实现对异常代码出现进行自动监控的实现方法


Posted in Python onSeptember 15, 2020

异常,不应该存在,但是我们有时候会遇到这样的情况,比如我们监控服务器的时候,每一秒去采集一次信息,那么有一秒没有采集到我们想要的信息,但是下一秒采集到了, 而后每次的采集都能采集到,就那么一次采集不到,我们应该针对这一次采集不到进行分析吗,这种的情况可以说无法重复出现,我们也无法避免,因为外界的因素太多太多,我们无法去控制这些外面的因素,所以我们会有这样的需求,一段时间内出现频率多少次,我们才能显示一次报警,或者说,一段时间内出现的频率达到我们的异常许可范围我们认为这样的属于异常,我们可以发出报警。

那么我们怎么来实现呢,我想到了装饰器,当程序执行到异常后,我记录时间,写入文件,然后读取最近的第五次的判断,两者时间戳的只差小于60s,我认为这样的可以发送警报,如果大于60s,则认为不足以发出我们的警告,

那么我们来看看我们的代码应该怎么写。

import datetime,time,random
def make(func):
  def mak(*args,**kwargs):
    try:
      func(*args,**kwargs)
    except:
      with open('except.txt','a+') as f:
        except_time=datetime.datetime.now()
        f.writelines(except_time.strftime('%Y-%m-%d %H:%M:%S')+'\n')
        f.close()
      with open('except.txt','rb') as m:
        try:
          date=m.readlines()[-5].decode('utf-8')
          ne=(date.split('\r\n')[0])
          f1=datetime.datetime.strptime(ne,'%Y-%m-%d %H:%M:%S')
          if (except_time-f1).seconds<6:
            print('异常!!!fail')
          else:
            print('正常!')
          m.close()
        except:
          print('越界代表着我们的实验是成功的')
  return mak
@make
def beijing(i,m):
  print(i/m)
if __name__=="__main__":
  while True:
    f=random.choice([0,1,2,3])
    n=random.choice([0,1,2,3])
    beijing(f,n)
    time.sleep(0.3)

这样我们针对一个程序的异常监控就实现了,我们来运行下这个异常监控的代码。,

python装饰器实现对异常代码出现进行自动监控的实现方法

我们可以看到我们的代码可以正常运行,那么我们来试试,我们对多个程序的代码进行监控,我们的脚本可不可以实现呢。

@make
def shanghai(i,m):
  print(i/m)
@make
def rizhao(i,m):
  print(i/m)
@make
def zhengzhou(i,m):
  print(i/m)

PS:遇到问题没人解答?需要Python学习资料?可以加点击下方链接自行获取
note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76

我们增加这么几个方法,并且我们去运行他们,

python装饰器实现对异常代码出现进行自动监控的实现方法

我们可以看到,只要有异常,我们的程序都会记录,当然了,这样的还不能正常利用到我们的工作中,

稍后,可以将这里的异常监控的部分的实践,和我之前写的异常监控脚本想结合下。

总结

到此这篇关于python装饰器实现对异常代码出现进行自动监控的实现方法的文章就介绍到这了,更多相关python装饰器自动监控内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现的计数排序算法示例
Nov 29 Python
用python脚本24小时刷浏览器的访问量方法
Dec 07 Python
Python综合应用名片管理系统案例详解
Jan 03 Python
jupyter lab文件导出/下载方式
Apr 22 Python
通过Python实现Payload分离免杀过程详解
Jul 13 Python
Python基于execjs运行js过程解析
Nov 27 Python
利用python查看数组中的所有元素是否相同
Jan 08 Python
conda安装tensorflow和conda常用命令小结
Feb 20 Python
python爬虫之利用selenium模块自动登录CSDN
Apr 22 Python
Django如何与Ajax交互
Apr 29 Python
Pyhton模块和包相关知识总结
May 12 Python
如何在C++中调用Python
May 21 Python
Python requests上传文件实现步骤
Sep 15 #Python
python -v 报错问题的解决方法
Sep 15 #Python
基于Python正确读取资源文件
Sep 14 #Python
Django框架安装及项目创建过程解析
Sep 14 #Python
通过代码实例了解Python sys模块
Sep 14 #Python
基于python实现简单C/S模式代码实例
Sep 14 #Python
Elasticsearch py客户端库安装及使用方法解析
Sep 14 #Python
You might like
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
使用PHP开发留言板功能
2019/11/19 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
JS继承 笔记
2011/07/13 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
JS实现的左侧竖向滑动菜单效果代码
2015/10/19 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
微信JS SDK接入的几点注意事项(必看篇)
2017/06/23 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
python实现将元祖转换成数组的方法
2015/05/04 Python
Python版微信红包分配算法
2015/05/04 Python
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
利用Python找出序列中出现最多的元素示例代码
2017/12/08 Python
django-rest-swagger对API接口注释的方法
2019/08/29 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
购买原创艺术品:Zatista
2019/11/09 全球购物
如何定义一个可复用的服务
2014/09/30 面试题
职业生涯规划怎么写
2013/12/29 职场文书
人力资源经理的岗位职责范本
2014/02/28 职场文书
高一学生评语大全
2014/04/25 职场文书
会计学自荐信
2014/06/03 职场文书
鼓舞士气的口号
2014/06/16 职场文书
机械设备与数控技术专业求职信
2014/08/10 职场文书
暑期实践个人总结
2015/03/06 职场文书
村级干部党员公开承诺事项
2015/05/04 职场文书
仙境之桥观后感
2015/06/16 职场文书
python中Matplotlib绘制直线的实例代码
2021/07/04 Python