掌握應(yīng)用錯誤 一文所講的是如何為生產(chǎn)應(yīng)用設(shè)置日志和出錯通知。本文要 講的是部署中配置調(diào)試的要點和如何使用全功能的 Python 調(diào)試器深挖錯誤。
在生產(chǎn)環(huán)境中,配置應(yīng)用時出錯?如果你可以通過 shell 來訪問主機,那么請首先在部署環(huán)境中驗證是否可以通過 shell 手動運行你的應(yīng)用。請確保驗證時使用的帳戶與配置的相同,這樣可以排除用戶權(quán)限引發(fā)的錯誤。你可以在你的生產(chǎn)服務(wù)器上,使用 Flask 內(nèi)建的開發(fā)服務(wù)器,并且設(shè)置 debug=True ,這樣有助于找到配置問題。但是,請只能在可控的情況下臨時這樣做 ,絕不能在生產(chǎn)時使用 debug=True 。
為了更深入的挖掘錯誤,追蹤代碼的執(zhí)行, Flask 提供一個開箱即用的調(diào)試器(參見調(diào)試模式 )。如果你需要使用其他 Python 調(diào)試器,請注意調(diào)試器之間的干擾問題。在使用你自己的調(diào)試器前要做一些參數(shù)調(diào)整:
如果你正在使用 Aptana 或 Eclipse 排錯,那么 use_debugger 和 use_reloader 都必須設(shè)置為 False 。
一個有用的配置模式如下(當然要根據(jù)你的應(yīng)用調(diào)整縮進):
FLASK:
DEBUG: True
DEBUG_WITH_APTANA: True
然后,在應(yīng)用入口( main.py ),修改如下:
if __name__ == "__main__":
# 為了讓 aptana 可以接收到錯誤,設(shè)置 use_debugger=False
app = create_app(config="config.yaml")
if app.debug: use_debugger = True
try:
# 如果使用其他調(diào)試器,應(yīng)當關(guān)閉 Flask 的調(diào)試器。
use_debugger = not(app.config.get('DEBUG_WITH_APTANA'))
except:
pass
app.run(use_debugger=use_debugger, debug=app.debug,
use_reloader=use_debugger, host='0.0.0.0')
? Copyright 2013, Armin Ronacher. Created using Sphinx.