例外,不應該存在,但是我們有時候會遇到這樣的情況,比如我們監控服務器的時候,每一秒去采集一次資訊,那么有一秒沒有采集到我們想要的資訊,但是下一秒采集到了, 而后每次的采集都能采集到,就那么一次采集不到,我們應該針對這一次采集不到進行分析嗎,這種的情況可以說無法重復出現,我們也無法避免,因為外界的因素太多太多,我們無法去控制這些外面的因素,所以我們會有這樣的需求,一段時間內出現頻率多少次,我們才能顯示一次報警,或者說,一段時間內出現的頻率達到我們的例外許可范圍我們認為這樣的屬于例外,我們可以發出報警,
那么我們怎么來實作呢,我想到了裝飾器,當程式執行到例外后,我記錄時間,寫入檔案,然后讀取最近的第五次的判斷,兩者時間戳的只差小于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:
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)
這樣我們針對一個程式的例外監控就實作了,我們來運行下這個例外監控的代碼,,

我們可以看到我們的代碼可以正常運行,那么我們來試試,我們對多個程式的代碼進行監控,我們的腳本可不可以實作呢,
@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學習資料?可以加點擊下方鏈接自行獲取
note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76
我們增加這么幾個方法,并且我們去運行他們,

我們可以看到,只要有例外,我們的程式都會記錄,當然了,這樣的還不能正常利用到我們的作業中,
稍后,可以將這里的例外監控的部分的實踐,和我之前寫的例外監控腳本想結合下,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/39740.html
標籤:Python
