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

相关文章

  • Python变量和数据类型详解

    Python变量和数据类型详解

    这篇文章主要介绍了Python变量和数据类型,是Python学习当中的基础知识,需要的朋友可以参考下,希望能够给你带来帮助
    2021-10-10
  • pycharm终端解释器与Python解释器配置

    pycharm终端解释器与Python解释器配置

    这篇文章主要介绍了pycharm终端解释器与Python解释器配置,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • python如何导入依赖包

    python如何导入依赖包

    在本篇文章里小编给大家整理的是关于python导入依赖包的方法,需要的朋友们学习下。
    2020-07-07
  • Python如何根据字典中的值排序

    Python如何根据字典中的值排序

    这篇文章主要介绍了Python如何根据字典中的值排序问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能

    Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能

    这篇文章主要介绍了Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能,需要的朋友可以参考下
    2018-11-11
  • Pygame坦克大战游戏开发实战详解代码

    Pygame坦克大战游戏开发实战详解代码

    《坦克大战》以二战坦克为题材,既保留了射击类游戏的操作性,也改进了射击类游戏太过于复杂难玩的高门槛特点,集休闲与竞技于一身。经典再度袭来,流畅的画面,疯狂的战斗,让玩家再次进入疯狂坦克的世界。玩家的目标是控制坦克躲避危险,消灭掉所有的敌人即可进入下一关
    2022-02-02
  • Python标准库sched模块使用指南

    Python标准库sched模块使用指南

    这篇文章主要介绍了Python标准库sched模块使用的相关资料,需要的朋友可以参考下
    2017-07-07
  • python检查URL是否正常访问的小技巧

    python检查URL是否正常访问的小技巧

    检查一个URL是否正常很容易,如果检查2000个URL,或者是大批量的URL怎么办?这篇文章就为大家介绍了python检查URL是否正常访问的小技巧,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • Pycharm技巧之代码跳转该如何回退

    Pycharm技巧之代码跳转该如何回退

    用Pycharm写Python代码有一段时间了,最近发现了一个Pycharm的一个小技巧想分享给大家,下面这篇文章主要给大家介绍了关于Pycharm代码跳转该如何回退的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07
  • 自适应线性神经网络Adaline的python实现详解

    自适应线性神经网络Adaline的python实现详解

    这篇文章主要介绍了自适应线性神经网络Adaline的python实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09

最新评论