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实现爬虫统计学校BBS男女比例(一)
Dec 31 Python
Python实现字典依据value排序
Feb 24 Python
Python的collections模块中的OrderedDict有序字典
Jul 07 Python
用python实现简单EXCEL数据统计的实例
Jan 24 Python
python算法演练_One Rule 算法(详解)
May 17 Python
Python错误: SyntaxError: Non-ASCII character解决办法
Jun 08 Python
Python爬虫设置代理IP的方法(爬虫技巧)
Mar 04 Python
Python3用tkinter和PIL实现看图工具
Jun 21 Python
python实现排序算法解析
Sep 08 Python
python3.7 sys模块的具体使用
Jul 22 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
Mar 19 Python
Python中猜拳游戏与猜筛子游戏的实现方法
Sep 04 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
php基础知识:类与对象(1)
2006/12/13 PHP
php切割页面div内容的实现代码分享
2012/07/31 PHP
phpQuery占用内存过多的处理方法
2013/11/13 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
2014/08/20 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
Javascript 检测、添加、移除样式(className)函数代码
2009/09/08 Javascript
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
bgsound 背景音乐 的一些常用方法及特殊用法小结
2010/05/11 Javascript
批量实现面向对象的实例代码
2013/07/01 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
JQuery解析XML的方法小结
2016/04/02 Javascript
微信小程序 网络请求(GET请求)详解
2016/11/16 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
Python中的Matplotlib模块入门教程
2015/04/15 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
python获取文件真实链接的方法,针对于302返回码
2018/05/14 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
2020/03/05 Python
jupyter实现重新加载模块
2020/04/16 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
Weblogc domain问题
2014/01/27 面试题
英语专业毕业生求职简历的自我评价
2013/10/24 职场文书
自行车租赁公司创业计划书
2014/01/28 职场文书
银行先进个人总结
2015/02/15 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
2015年党建工作总结
2015/03/30 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
Nginx开源可视化配置工具NginxConfig使用教程
2022/06/21 Servers