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

我們可以看到我們的代碼可以正常運行,那么我們來試試,我們對多個程序的代碼進(jìn)行監(jiān)控,我們的腳本可不可以實現(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í)資料?可以加點擊下方鏈接自行獲取
note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76
我們增加這么幾個方法,并且我們?nèi)ミ\行他們,

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

