python裝飾器實(shí)現(xiàn)對(duì)異常代碼出現(xiàn)進(jìn)行自動(dòng)監(jiān)控的實(shí)現(xiàn)方法
異常,不應(yīng)該存在,但是我們有時(shí)候會(huì)遇到這樣的情況,比如我們監(jiān)控服務(wù)器的時(shí)候,每一秒去采集一次信息,那么有一秒沒有采集到我們想要的信息,但是下一秒采集到了, 而后每次的采集都能采集到,就那么一次采集不到,我們應(yīng)該針對(duì)這一次采集不到進(jìn)行分析嗎,這種的情況可以說無法重復(fù)出現(xiàn),我們也無法避免,因?yàn)橥饨绲囊蛩靥嗵?,我們無法去控制這些外面的因素,所以我們會(huì)有這樣的需求,一段時(shí)間內(nèi)出現(xiàn)頻率多少次,我們才能顯示一次報(bào)警,或者說,一段時(shí)間內(nèi)出現(xiàn)的頻率達(dá)到我們的異常許可范圍我們認(rèn)為這樣的屬于異常,我們可以發(fā)出報(bào)警。
那么我們?cè)趺磥韺?shí)現(xiàn)呢,我想到了裝飾器,當(dāng)程序執(zhí)行到異常后,我記錄時(shí)間,寫入文件,然后讀取最近的第五次的判斷,兩者時(shí)間戳的只差小于60s,我認(rèn)為這樣的可以發(fā)送警報(bào),如果大于60s,則認(rèn)為不足以發(fā)出我們的警告,
那么我們來看看我們的代碼應(yīng)該怎么寫。
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)了,我們來運(yùn)行下這個(gè)異常監(jiān)控的代碼。,
我們可以看到我們的代碼可以正常運(yùn)行,那么我們來試試,我們對(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:遇到問題沒人解答?需要Python學(xué)習(xí)資料?可以加點(diǎn)擊下方鏈接自行獲取
note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76
我們?cè)黾舆@么幾個(gè)方法,并且我們?nèi)ミ\(yùn)行他們,
我們可以看到,只要有異常,我們的程序都會(huì)記錄,當(dāng)然了,這樣的還不能正常利用到我們的工作中,
稍后,可以將這里的異常監(jiān)控的部分的實(shí)踐,和我之前寫的異常監(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?dowhy數(shù)據(jù)估計(jì)因果分析功能探索
這篇文章主要為大家介紹了python?dowhy數(shù)據(jù)估計(jì)因果分析功能實(shí)例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-02-02Pyinstaller打包報(bào)錯(cuò)小結(jié)
本文主要介紹了Pyinstaller打包報(bào)錯(cuò)小結(jié),詳細(xì)的介紹了5種錯(cuò)誤的解決方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02Pycharm無法打開雙擊沒反應(yīng)的問題及解決方案
這篇文章主要介紹了Pycharm無法打開,雙擊沒反應(yīng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08python 限制函數(shù)執(zhí)行時(shí)間,自己實(shí)現(xiàn)timeout的實(shí)例
今天小編就為大家分享一篇python 限制函數(shù)執(zhí)行時(shí)間,自己實(shí)現(xiàn)timeout的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01wxpython中利用線程防止假死的實(shí)現(xiàn)方法
上午抽空學(xué)習(xí)了一下在wxpython中啟用線程的方法,將GUI和功能的執(zhí)行分開,果然程序運(yùn)行起來杠杠滴。因?yàn)槲夷莻€(gè)軟件的代碼暫時(shí)不能公開,這里專門寫個(gè)小程序,作為今天的筆記吧2014-08-08Python使用PIL進(jìn)行JPEG圖像壓縮的簡(jiǎn)易教程
本文介紹了如何使用Python編程語言和wxPython圖形用戶界面庫進(jìn)行JPEG圖像的壓縮,通過添加滑塊控件,我們可以調(diào)整壓縮質(zhì)量,并將壓縮后的照片另存為原來的名稱加上后綴"壓縮+質(zhì)量數(shù)字"的新文件,需要的朋友可以參考下2023-09-09Python如何telnet到網(wǎng)絡(luò)設(shè)備
這篇文章主要介紹了Python如何telnet到網(wǎng)絡(luò)設(shè)備,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-02-02