python裝飾器實現對異常代碼出現進行監控
異常,不應該存在,但是我們有時候會遇到這樣的情況,比如我們監控伺服器的時候,每一秒去採集一次信息,那麼有一秒沒有採集到我們想要的信息,但是下一秒採集到了, 而後每次的採集都能採集到,就那麼一次採集不到,我們應該針對這一次採集不到進行分析嗎,這種的情況可以說無法重複出現,我們也無法避免,因為外界的因素太多太多,我們無法去控制這些外面的因素,所以我們會有這樣的需求,一段時間內出現頻率多少次,我們才能顯示一次報警,或者說,一段時間內出現的頻率達到我們的異常許可範圍我們認為這樣的屬於異常,我們可以發出報警。
那麼我們怎麼來實現呢,我想到了裝飾器,當程序執行到異常後,我記錄時間,寫入文件,然後讀取最近的第五次的判斷,兩者時間戳的只差小於60s,我認為這樣的可以發送警報,如果大於60s,則認為不足以發出我們的警告,
那麼我們來看看我們的代碼應該怎麼寫。
import datetime,time,random
def make(func):
def mak(*args,**kwargs):
try:
func(*args,**kwargs)
except:
with open("except.txt","a+") as f:
f.writelines(except_time.strftime("%Y-%m-%d %H:%M:%S")+"
")
f.close()
with open("except.txt","rb") as m:
try:
date=m.readlines()[-5].decode("utf-8")
ne=(date.split("
")[0])
if (except_time-f1).seconds
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)
這樣我們針對一個程序的異常監控就實現了,我們來運行下這個異常監控的代碼。,
我們可以看到我們的代碼可以正常運行,那麼我們來試試,我們對多個程序的代碼進行監控,我們的腳本可不可以實現呢。
@make
defshanghai(i,m):
print(i/m)@make
defrizhao(i,m):
print(i/m)@make
defzhengzhou(i,m):
print(i/m)
我們增加這麼幾個方法,並且我們去運行他們,
我們可以看到,只要有異常,我們的程序都會記錄,當然了,這樣的還不能正常利用到我們的工作中,
稍後,可以將這裡的異常監控的部分的實踐,和我之前寫的異常監控腳本想結合下。
繼續關注雷子說測試,更多的代碼,更好玩的東西帶給你。雷子說測試,與你不見不散,以後爭取每天都會帶來一篇文章。雷子說測試,與你常在,喜歡雷子說測試的,可以把公眾號推薦個大家,雷子說測試歡迎大家
TAG:雷子說測試 |