利用tornado write_error()方法異常提醒

tornado項(xiàng)目中實(shí)現(xiàn)出現(xiàn)異常就提醒(如郵件提醒)機(jī)制并跳轉(zhuǎn)到錯(cuò)誤頁(yè)面。

看一下tornado原來(lái)的實(shí)現(xiàn)。

web.py


write_error()

debug=True時(shí),會(huì)直接返回給瀏覽器錯(cuò)誤信息;debug=False返回包含錯(cuò)誤碼的html字符串珍促。

ps: 在Application中有如下邏輯:

Application


嘗試新建BaseHandler并重寫(xiě)write_error()方法穴翩,其他handler都繼承BaseHandler背蟆。

DEBUG = False
SEND_ERROR_MAIL = True

class BaseHandler(tornado.web.RequestHandler):
    def exception_nofity(self, status_code, error_trace_list):
        if SEND_ERROR_MAIL:
            print('send mail...')


    def write_error(self, status_code, **kwargs):
        error_trace_list = traceback.format_exception(*kwargs.get("exc_info"))

        if DEBUG:
            # from web.py
            # in debug mode, try to send a traceback
            self.set_header('Content-Type', 'text/plain')
            for line in error_trace_list:
                self.write(line)
            self.finish()
        else:

            self.exception_nofity(status_code, error_trace_list)

            # by status_code
            if status_code == 500:
                self.render('500.html')
                return

            if status_code == 403:
                self.write('sorry, request forbidden!')
                return

            self.render('error.html')

        return
  1. exception_nofity()方法中可以分析異常信息以及handler中的sessioncookies和請(qǐng)求參數(shù)等柜某,處理后記錄在數(shù)據(jù)庫(kù)。
  2. 在memcached中設(shè)置新郵件標(biāo)志位為1。
  3. 另起一個(gè)錯(cuò)誤郵件發(fā)送的進(jìn)程,若memcached中有新郵件標(biāo)志稚补, 先改變memcached新郵件標(biāo)志位, 再查詢數(shù)據(jù)庫(kù)杜秸,返回一定數(shù)量的未發(fā)送郵件莉撇,并發(fā)送其障。(先改緩存再取數(shù)據(jù)庫(kù),否則可能后面的新的錯(cuò)誤信息郵件存入數(shù)據(jù)庫(kù)后會(huì)無(wú)法及時(shí)發(fā)送。)
  4. 改變已發(fā)送郵件數(shù)據(jù)庫(kù)狀態(tài)狱从。

ps: 或直接異步發(fā)送?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末驼卖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子考婴,更是在濱河造成了極大的恐慌颗圣,老刑警劉巖蛮寂,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骄恶,死亡現(xiàn)場(chǎng)離奇詭異寞秃,居然都是意外死亡绑改,警方通過(guò)查閱死者的電腦和手機(jī)皆的,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人筹煮,你說(shuō)我怎么就攤上這事檬洞∨炀模” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)狡赐,這世上最難降的妖魔是什么搀擂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘驾锰。我一直安慰自己椭豫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著瞬项,像睡著了一般妥衣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,156評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音播歼,去河邊找鬼伶跷。 笑死掰读,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的叭莫。 我是一名探鬼主播蹈集,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼雇初!你這毒婦竟也來(lái)了拢肆?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤靖诗,失蹤者是張志新(化名)和其女友劉穎郭怪,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體刊橘,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鄙才,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了促绵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片攒庵。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖绞愚,靈堂內(nèi)的尸體忽然破棺而出叙甸,到底是詐尸還是另有隱情,我是刑警寧澤位衩,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站熔萧,受9級(jí)特大地震影響糖驴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜佛致,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一贮缕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧俺榆,春花似錦感昼、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至萍桌,卻和暖如春宵溅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背上炎。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工恃逻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓寇损,卻偏偏與公主長(zhǎng)得像凸郑,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子矛市,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

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

  • 譯者說(shuō) Tornado 4.3于2015年11月6日發(fā)布线椰,該版本正式支持Python3.5的async/await...
    TaoBeier閱讀 3,046評(píng)論 0 10
  • 1、memcache的概念尘盼? Memcache是一個(gè)高性能的分布式的內(nèi)存對(duì)象緩存系統(tǒng)憨愉,通過(guò)在內(nèi)存里維護(hù)一個(gè)統(tǒng)一的巨...
    桖辶殤閱讀 2,241評(píng)論 2 12
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)卿捎,斷路器配紫,智...
    卡卡羅2017閱讀 134,693評(píng)論 18 139
  • 22年12月更新:個(gè)人網(wǎng)站關(guān)停,如果仍舊對(duì)舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,186評(píng)論 22 257
  • 人生的起點(diǎn)決定終點(diǎn),雖說(shuō)條條大路通羅馬底桂,殊不知有人就出生在羅馬植袍! 何為羅馬?一個(gè)國(guó)家籽懦,一種向往于个,無(wú)論是抽象的,亦或...
    IT行業(yè)情報(bào)局閱讀 406評(píng)論 0 2