Le décorateur Python met en œuvre la surveillance des codes anormaux

Anormal, cela ne devrait pas exister, mais nous rencontrons parfois des situations comme celle-ci. Par exemple, lorsque nous surveillons le serveur, nous recueillons des informations toutes les secondes, puis les informations que nous voulons ne sont pas collectées pendant une seconde, mais la seconde suivante est collectée. , Et puis chaque fois que nous pouvons le collecter, mais nous ne pouvons pas le collecter une seule fois. Devrions-nous analyser si nous ne pouvons pas collecter cette fois? On peut dire que cette situation ne peut pas se répéter, et nous ne pouvons pas l'éviter car les facteurs externes sont trop importants. Trop, nous ne pouvons pas contrôler ces facteurs externes, donc nous aurons une telle demande, combien de fois dans une période de temps, nous pouvons afficher une alarme, ou en d'autres termes, la fréquence d'occurrence dans une période de temps atteint notre plage d'autorisation anormale Nous pensons que c'est anormal et nous pouvons envoyer une alarme.

Alors, comment y parvenir? J'ai pensé au décorateur. Lorsque le programme est exécuté de manière anormale, j'enregistre l'heure, j'écris dans le fichier, puis je lis le cinquième jugement. La différence entre les deux horodatages n'est que de moins de 60 s. Pensez que ce genre d'alarme peut être envoyé, si elle est plus longue que 60s, elle n'est pas considérée comme suffisante pour envoyer notre alerte,

Voyons donc comment notre code doit être écrit.

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)

De cette façon, nous avons réalisé la surveillance anormale d'un programme, exécutons le code de cette surveillance anormale. ,
Insérez la description de l'image ici
Nous pouvons voir que notre code peut fonctionner normalement, alors essayons-le. Nous surveillons le code de plusieurs programmes. Notre script peut-il être implémenté?

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
@make
def shanghai(i,m):
    print(i/m)
@make
def rizhao(i,m):
    print(i/m)
@make
def zhengzhou(i,m):
    print(i/m)

Nous avons ajouté quelques méthodes, et nous les exécutons,
Insérez la description de l'image ici
nous pouvons voir que tant qu'il y a une exception, notre programme l'enregistrera, bien sûr, cela ne peut pas être utilisé dans notre travail normalement.

Plus tard, vous pouvez combiner la pratique de la surveillance anormale ici avec le script de surveillance anormale que j'ai écrit auparavant.

Je suppose que tu aimes

Origine blog.csdn.net/sinat_38682860/article/details/108488888
conseillé
Classement