Flask 调试应用错误
对于生产应用,按照 记录应用错误 中的描述来配置你应用的日志记录和 通知。这个章节讲述了调试部署配置和深入一个功能强大的 Python 调试器的要点。
有疑问时,手动运行
在配置你的应用到生产环境时时遇到了问题?如果你拥有主机的 shell 权限,验证你 是否可以在部署环境中手动用 shell 运行你的应用。确保在同一用户账户下运行配置 好的部署来解决权限问题。你可以使用 Flask 内置的开发服务器并设置 debug=True , 这在捕获配置问题的时候非常有效,但是 请确保在可控环境下临时地这么做。 不要 在生产环境中使用 debug=True 运行。
调试器操作
为了深入跟踪代码的执行,Flask 提供了一个方框外的调试器(见 调试模式 )。 如果你想用其它的 Python 调试器,请注意相互的调试器接口。你需要设置下面的参数来 使用你中意的调试器:
- debug - 是否开启调试模式并捕获异常
- use_debugger - 是否使用内部的 Flask 调试器
- use_reloader - 是否在异常时重新载入并创建子进程
debug 必须为 True (即异常必须被捕获)来允许其它的两个选项设置为任何值。
如果你使用 Aptana/Eclipse 来调试,你会需要把 use_debugger 和 user_reloader 都设置为 False 。
一个可能有用的配置模式就是在你的 config.yaml 中设置为如下(当然,自行更改为适用 你应用的):
FLASK:
DEBUG: True
DEBUG_WITH_APTANA: True
然后在你应用的入口( main.py ),你可以写入下面的内容:
if __name__ == "__main__":
# To allow aptana to receive errors, set use_debugger=False
app = create_app(config="config.yaml")
if app.debug: use_debugger = True
try:
# Disable Flask's debugger if external debugger is requested
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')
更多建议: