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 相关文章推荐
使用C语言来扩展Python程序和Zope服务器的教程
Apr 14 Python
python 网络编程详解及简单实例
Apr 25 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
Jul 07 Python
python itchat实现微信好友头像拼接图的示例代码
Aug 14 Python
Python算法输出1-9数组形成的结果为100的所有运算式
Nov 03 Python
酷! 程序员用Python带你玩转冲顶大会
Jan 17 Python
python入门:这篇文章带你直接学会python
Sep 14 Python
Python发展简史 Python来历
May 14 Python
Python随机数函数代码实例解析
Feb 09 Python
Python unittest生成测试报告过程解析
Sep 08 Python
Python特殊属性property原理及使用方法解析
Oct 09 Python
Python jieba结巴分词原理及用法解析
Nov 05 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
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
php集成开发环境详解
2019/09/24 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
js+css在交互上的应用
2010/07/18 Javascript
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
使用jQuery mobile库检测url绝对地址和相对地址的方法
2015/12/04 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
Python装饰器基础概念与用法详解
2018/12/22 Python
django框架创建应用操作示例
2019/09/26 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
2021/01/07 Python
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
Haggar官网:美国男装品牌
2020/02/16 全球购物
介绍一下你对SOA的认识
2016/04/24 面试题
优秀通讯员事迹材料
2014/01/28 职场文书
感恩教育月活动总结
2014/07/07 职场文书
武当山导游词
2015/02/03 职场文书
个人先进事迹总结
2015/02/26 职场文书
2015年求职自荐信范文
2015/03/04 职场文书
第一节英语课开场白
2015/06/01 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
工作简报范文
2015/07/21 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技