美文网首页
利用Python装饰器实现对异常代码执行进行监控

利用Python装饰器实现对异常代码执行进行监控

作者: 雷子V5 | 来源:发表于2021-08-06 05:49 被阅读0次

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

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

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

1.实现装饰器

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

2.具体调用

@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)

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

image.png

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

@make

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

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

def zhengzhou(i,m):   
    print(i/m)

我们看下最后的执行的结果

image.png

我们可以看到,只要有异常,我们的程序都会记录,当然了,这样的还不能正常利用到我们的工作中。我们可以根据实际的项目去验证。 这样的一段代码呢,我在写过的一个线上的接口的监控中有用到。我的做法呢,是对于结果中的某个字段做了一次监控,最后如果5min超过10个就直接报警。

相关文章

  • 利用Python装饰器实现对异常代码执行进行监控

    异常,不应该存在,但是我们有时候会遇到这样的情况,比如我们监控服务器的时候,每一秒去采集一次信息,那么有一秒没有采...

  • python3基础---详解装饰器

    1、装饰器原理 2、装饰器语法 3、装饰器执行的时间 装饰器在Python解释器执行的时候,就会进行自动装饰,并不...

  • Python监控脚本异常和进程异常

    脚本程序监控:通过python装饰器监控脚本是否异常,如果异常发送报警邮件通知开发人员 脚本进程监控:因为使用的是...

  • 11.装饰器(注解)、深浅拷贝

    一、装饰器 1). 装饰器概述 装饰器:Python中的代理模式的实现。 对其他函数进行增强。 原则:不修改被修饰...

  • Tenacity——Exception Retry 从此无比简单

    Python 装饰器装饰类中的方法这篇文章,使用了装饰器来捕获代码异常。这种方式可以让代码变得更加简洁和Pytho...

  • Python装饰器高级用法

    转载至:Python装饰器高级用法 在 Python 中, 装饰器 一般用来修饰函数,实现公共功能,达到代码复用的...

  • 9个Python 内置装饰器: 显著优化代码

    装饰器是应用“Python 之禅”哲学的最佳 Python 特性。装饰器可以帮助您编写更少、更简单的代码来实现复杂...

  • Python - 学习理解带参数的装饰器

    理解带参数的装饰器 参考文章 Python精进-装饰器与函数对象 加了装饰器这段代码从一个函数定义(不会执行任何东...

  • Spring Cloud 学习(22) --- Zuul(四)

    之前利用 Hystrix,通过熔断器实现了通过某个阈值来对异常流量进行降级处理。除了对异常流量进行降级之外,还可以...

  • Python装饰器

    什么是装饰器? 类似于Java的注解。在python中叫做装饰器,目的是用于对已存在代码进行修改。这里的修改是狭义...

网友评论

      本文标题:利用Python装饰器实现对异常代码执行进行监控

      本文链接:https://www.haomeiwen.com/subject/ueqbvltx.html