利用Python裝飾器實(shí)現(xiàn)對(duì)異常代碼執(zhí)行進(jìn)行監(jiān)控

異常,不應(yīng)該存在崇棠,但是我們有時(shí)候會(huì)遇到這樣的情況咽袜,比如我們監(jiān)控服務(wù)器的時(shí)候,每一秒去采集一次信息枕稀,那么有一秒沒有采集到我們想要的信息询刹,但是下一秒采集到了, 而后每次的采集都能采集到萎坷,就那么一次采集不到凹联,我們應(yīng)該針對(duì)這一次采集不到進(jìn)行分析嗎,這種的情況可以說無法重復(fù)出現(xiàn)哆档,我們也無法避免蔽挠,因?yàn)橥饨绲囊蛩靥嗵啵覀儫o法去控制這些外面的因素瓜浸,所以我們會(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)該怎么寫。

1.實(shí)現(xiàn)裝飾器

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('異常3审铩U瓜洹!fail')

                    else:

                        print('正常蹬昌!')

                    m.close()

                except:

                    print('越界代表著我們的實(shí)驗(yàn)是成功的')

    return mak

2.具體調(diào)用

@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)控的代碼。皂贩,

image.png

我們可以看到我們的代碼可以正常運(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)

我們看下最后的執(zhí)行的結(jié)果

image.png

我們可以看到,只要有異常辈末,我們的程序都會(huì)記錄愚争,當(dāng)然了,這樣的還不能正常利用到我們的工作中挤聘。我們可以根據(jù)實(shí)際的項(xiàng)目去驗(yàn)證轰枝。 這樣的一段代碼呢,我在寫過的一個(gè)線上的接口的監(jiān)控中有用到檬洞。我的做法呢狸膏,是對(duì)于結(jié)果中的某個(gè)字段做了一次監(jiān)控,最后如果5min超過10個(gè)就直接報(bào)警添怔。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末湾戳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子广料,更是在濱河造成了極大的恐慌砾脑,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艾杏,死亡現(xiàn)場(chǎng)離奇詭異韧衣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)购桑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門畅铭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人勃蜘,你說我怎么就攤上這事硕噩。” “怎么了缭贡?”我有些...
    開封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵炉擅,是天一觀的道長(zhǎng)辉懒。 經(jīng)常有香客問我,道長(zhǎng)谍失,這世上最難降的妖魔是什么眶俩? 我笑而不...
    開封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮快鱼,結(jié)果婚禮上颠印,老公的妹妹穿的比我還像新娘。我一直安慰自己攒巍,他們只是感情好嗽仪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著柒莉,像睡著了一般闻坚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上兢孝,一...
    開封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天窿凤,我揣著相機(jī)與錄音,去河邊找鬼跨蟹。 笑死雳殊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的窗轩。 我是一名探鬼主播夯秃,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼痢艺!你這毒婦竟也來了仓洼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤堤舒,失蹤者是張志新(化名)和其女友劉穎色建,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舌缤,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡箕戳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了国撵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陵吸。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖介牙,靈堂內(nèi)的尸體忽然破棺而出走越,到底是詐尸還是另有隱情,我是刑警寧澤耻瑟,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布旨指,位于F島的核電站,受9級(jí)特大地震影響喳整,放射性物質(zhì)發(fā)生泄漏谆构。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一框都、第九天 我趴在偏房一處隱蔽的房頂上張望搬素。 院中可真熱鬧,春花似錦魏保、人聲如沸熬尺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粱哼。三九已至,卻和暖如春檩咱,著一層夾襖步出監(jiān)牢的瞬間揭措,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工刻蚯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绊含,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓炊汹,卻偏偏與公主長(zhǎng)得像躬充,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子讨便,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容