第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

當(dāng)用戶遇到帶有所有請求值(POST/GET)的錯(cuò)誤時(shí),F(xiàn)lask 發(fā)送電子郵件

當(dāng)用戶遇到帶有所有請求值(POST/GET)的錯(cuò)誤時(shí),F(xiàn)lask 發(fā)送電子郵件

手掌心 2021-09-02 15:02:14
Flask 框架中的標(biāo)準(zhǔn)代碼允許在用戶遇到導(dǎo)致錯(cuò)誤的頁面時(shí)向人們發(fā)送電子郵件,通常(以及我已實(shí)現(xiàn)的)在app.py腳本中如下所示:from app import app...if not app.debug:    import logging    from logging.handlers import SMTPHandler    mail_handler = SMTPHandler(EMAIL_SERVER,                               EMAIL_FROM,                               EMAIL_ADMINS,                                EMAIL_SUBJECT,                               credentials=(EMAIL_ EMAIL,'***'),                               port=EMAIL_PORT)    mail_handler.setLevel(logging.ERROR)    app.logger.addHandler(mail_handler)這很棒,因?yàn)樗鼤l(fā)送一封包含啟動調(diào)試過程信息的電子郵件,如下所示:Exception on / [GET]Traceback (most recent call last):File "C:\Python27\lib\site-packages\flask\app.py", line 1817, in wsgi_appresponse = self.full_dispatch_request()File "C:\Python27\lib\site-packages\flask\app.py", line 1477, in full_dispatch_requestrv = self.handle_user_exception(e)File "C:\Python27\lib\site-packages\flask\app.py", line 1381, in handle_user_exceptionreraise(exc_type, exc_value, tb)File "C:\Python27\lib\site-packages\flask\app.py", line 1475, in full_dispatch_requestrv = self.dispatch_request()File "C:\Python27\lib\site-packages\flask\app.py", line 1461, in dispatch_requestreturn self.view_functions[rule.endpoint](**req.view_args)File "hello.py", line 6, in hello_worldraise ExceptionException這不包含用戶輸入的 GET/POST 變量。這些可能是調(diào)試過程的關(guān)鍵,這就是我的問題。您如何request.form在這封電子郵件中包含所有變量(用于 GET/POST)?雖然我無法通過 Google 找到該問題的直接答案,但我找到的最接近的資源是 Flask 文檔(http://flask.pocoo.org/docs/1.0/logging/#logging),其中有一個(gè)部分“注入請求信息”討論了子類化,logging.Formatter但它指的是額外的信息,例如 IP 地址,并需要識別特定的值。這讓我想到了我的問題:如何修改日志電子郵件以包含來自用戶的錯(cuò)誤和所有請求(GET/POST)數(shù)據(jù)?
查看完整描述

1 回答

?
汪汪一只貓

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊

兩周后,仍然沒有明確回答我的問題。我發(fā)現(xiàn)的解決方法是修改 500 錯(cuò)誤處理程序:


@app.errorhandler(500)

def status_code_500(exc):

    # do stuff in here

從這里的解決辦法是將所有轉(zhuǎn)儲request.args和request.form值到使用字符串json.dumps(request.args, indent=4, sort_keys=True)。這可以變成電子郵件,我們可以使用它@app.errorhandler通過 SMTPhandler 最好在新線程上發(fā)送電子郵件,這樣用戶就不會被阻止。


我們還可以在這封電子郵件中包含堆棧回溯traceback.formatexc。


這需要一些工作,因?yàn)槲覀兓旧鲜侵貙懸呀?jīng)內(nèi)置的現(xiàn)有代碼,但我還沒有找到允許我們將文本添加到 logging.handler 的電子郵件的解決方案。


查看完整回答
反對 回復(fù) 2021-09-02
  • 1 回答
  • 0 關(guān)注
  • 230 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號