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

 更新时间:2020年09月15日 08:55:18   作者:Python探索牛  
这篇文章主要介绍了python装饰器实现对异常代码出现进行自动监控的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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

那么我们怎么来实现呢,我想到了装饰器,当程序执行到异常后,我记录时间,写入文件,然后读取最近的第五次的判断,两者时间戳的只差小于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)

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

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

@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装饰器自动监控内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Django程序的优化技巧

    Django程序的优化技巧

    如果你的Python程序或Django项目运行速度慢,先别急着怪Python或Django。其实程序运行效率是可以通过提升硬件水平、架构和数据库优化和改进算法来大大提升的。今天大江哥将分享一些主要Django性能优化手段,完全可以让你的Django程序跑得飞快。
    2021-04-04
  • python dowhy数据估计因果分析功能探索

    python dowhy数据估计因果分析功能探索

    这篇文章主要为大家介绍了python dowhy数据估计因果分析功能实例探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-02-02
  • Python字符串的全排列算法实例详解

    Python字符串的全排列算法实例详解

    这篇文章主要介绍了Python字符串的全排列算法,结合实例形式较为详细的总结分析了Python字符串全排列的常见操作技巧,需要的朋友可以参考下
    2019-01-01
  • Pyinstaller打包报错小结

    Pyinstaller打包报错小结

    本文主要介绍了Pyinstaller打包报错小结,详细的介绍了5种错误的解决方法,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • Pycharm无法打开双击没反应的问题及解决方案

    Pycharm无法打开双击没反应的问题及解决方案

    这篇文章主要介绍了Pycharm无法打开,双击没反应,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • python 限制函数执行时间,自己实现timeout的实例

    python 限制函数执行时间,自己实现timeout的实例

    今天小编就为大家分享一篇python 限制函数执行时间,自己实现timeout的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • wxpython中利用线程防止假死的实现方法

    wxpython中利用线程防止假死的实现方法

    上午抽空学习了一下在wxpython中启用线程的方法,将GUI和功能的执行分开,果然程序运行起来杠杠滴。因为我那个软件的代码暂时不能公开,这里专门写个小程序,作为今天的笔记吧
    2014-08-08
  • python中的deque基本用法详解

    python中的deque基本用法详解

    Python 中的 deque是一个低级别的、高度优化的双端队列,对于实现优雅、高效的Pythonic队列和堆栈很有用,这篇文章主要介绍了python中的deque基本用法的相关资料,需要的朋友可以参考下
    2017-11-11
  • Python使用PIL进行JPEG图像压缩的简易教程

    Python使用PIL进行JPEG图像压缩的简易教程

    本文介绍了如何使用Python编程语言和wxPython图形用户界面库进行JPEG图像的压缩,通过添加滑块控件,我们可以调整压缩质量,并将压缩后的照片另存为原来的名称加上后缀"压缩+质量数字"的新文件,需要的朋友可以参考下
    2023-09-09
  • Python如何telnet到网络设备

    Python如何telnet到网络设备

    这篇文章主要介绍了Python如何telnet到网络设备,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-02-02

最新评论