python裝飾器實(shí)現(xiàn)對(duì)異常代碼出現(xiàn)進(jìn)行自動(dòng)監(jiān)控的實(shí)現(xiàn)方法
異常,不應(yīng)該存在,但是我們有時(shí)候會(huì)遇到這樣的情況,比如我們監(jiān)控服務(wù)器的時(shí)候,每一秒去采集一次信息,那么有一秒沒(méi)有采集到我們想要的信息,但是下一秒采集到了, 而后每次的采集都能采集到,就那么一次采集不到,我們應(yīng)該針對(duì)這一次采集不到進(jìn)行分析嗎,這種的情況可以說(shuō)無(wú)法重復(fù)出現(xiàn),我們也無(wú)法避免,因?yàn)橥饨绲囊蛩靥嗵?,我們無(wú)法去控制這些外面的因素,所以我們會(huì)有這樣的需求,一段時(shí)間內(nèi)出現(xiàn)頻率多少次,我們才能顯示一次報(bào)警,或者說(shuō),一段時(shí)間內(nèi)出現(xiàn)的頻率達(dá)到我們的異常許可范圍我們認(rèn)為這樣的屬于異常,我們可以發(fā)出報(bào)警。
那么我們?cè)趺磥?lái)實(shí)現(xiàn)呢,我想到了裝飾器,當(dāng)程序執(zhí)行到異常后,我記錄時(shí)間,寫(xiě)入文件,然后讀取最近的第五次的判斷,兩者時(shí)間戳的只差小于60s,我認(rèn)為這樣的可以發(fā)送警報(bào),如果大于60s,則認(rèn)為不足以發(fā)出我們的警告,
那么我們來(lái)看看我們的代碼應(yīng)該怎么寫(xiě)。
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('越界代表著我們的實(shí)驗(yàn)是成功的')
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)
這樣我們針對(duì)一個(gè)程序的異常監(jiān)控就實(shí)現(xiàn)了,我們來(lái)運(yùn)行下這個(gè)異常監(jiān)控的代碼。,

我們可以看到我們的代碼可以正常運(yùn)行,那么我們來(lái)試試,我們對(duì)多個(gè)程序的代碼進(jìn)行監(jiān)控,我們的腳本可不可以實(shí)現(xiàn)呢。
@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:遇到問(wèn)題沒(méi)人解答?需要Python學(xué)習(xí)資料?可以加點(diǎn)擊下方鏈接自行獲取
note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76
我們?cè)黾舆@么幾個(gè)方法,并且我們?nèi)ミ\(yùn)行他們,

我們可以看到,只要有異常,我們的程序都會(huì)記錄,當(dāng)然了,這樣的還不能正常利用到我們的工作中,
稍后,可以將這里的異常監(jiān)控的部分的實(shí)踐,和我之前寫(xiě)的異常監(jiān)控腳本想結(jié)合下。
總結(jié)
到此這篇關(guān)于python裝飾器實(shí)現(xiàn)對(duì)異常代碼出現(xiàn)進(jìn)行自動(dòng)監(jiān)控的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)python裝飾器自動(dòng)監(jiān)控內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python輸出結(jié)果刷新及進(jìn)度條的實(shí)現(xiàn)操作
這篇文章主要介紹了python輸出結(jié)果刷新及進(jìn)度條的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
Python3加密解密庫(kù)Crypto的RSA加解密和簽名/驗(yàn)簽實(shí)現(xiàn)方法實(shí)例
這篇文章主要介紹了Python3加密解密庫(kù)Crypto的RSA加解密和簽名/驗(yàn)簽實(shí)現(xiàn)方法實(shí)例,需要的朋友可以參考下2020-02-02
利用Python腳本實(shí)現(xiàn)自動(dòng)刷網(wǎng)課
這篇文章主要介紹了利用Python腳本實(shí)現(xiàn)自動(dòng)刷網(wǎng)課,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
python 服務(wù)器運(yùn)行代碼報(bào)錯(cuò)ModuleNotFoundError的解決辦法
這篇文章主要介紹了python 服務(wù)器運(yùn)行代碼報(bào)錯(cuò)ModuleNotFoundError的解決辦法,幫助大家排除錯(cuò)誤,正確的運(yùn)行代碼,感興趣的朋友可以了解下2020-09-09
Python入門(mén)教程(十六)Python的if邏輯判斷分支
這篇文章主要介紹了Python入門(mén)教程(十六)Python的if邏輯判斷分支,Python是一門(mén)非常強(qiáng)大好用的語(yǔ)言,也有著易上手的特性,本文為入門(mén)教程,需要的朋友可以參考下2023-04-04
Windows下pycharm創(chuàng)建Django 項(xiàng)目(虛擬環(huán)境)過(guò)程解析
這篇文章主要介紹了Windows下pycharm創(chuàng)建Django 項(xiàng)目(虛擬環(huán)境)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
PyCharm License Activation激活碼失效問(wèn)題的解決方法(圖文詳解)
這篇文章主要介紹了PyCharm License Activation激活碼失效問(wèn)題的解決方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03

