当用 Python 构建 Flask 服务并设置调试模式时,Flask 服务将初始化两次。当初始化加载缓存和类似的东西时,这可能需要一段时间。在开发(调试)模式下,必须这样做两次是很烦人的。当调试关闭时,Flask 服务只初始化一次。
如何停止烧瓶初始化两次在调试模式?
你可以使用 before_first_request挂钩:
before_first_request
@app.before_first_request def initialize(): print "Called only once, when the first request comes in"
这里要做的最简单的事情是将 use_reloader=False添加到对 app.run的调用中——即: app.run(debug=True, use_reloader=False)
use_reloader=False
app.run
app.run(debug=True, use_reloader=False)
或者,您可以检查环境中 WERKZEUG_RUN_MAIN的值:
WERKZEUG_RUN_MAIN
if os.environ.get("WERKZEUG_RUN_MAIN") == "true": # The reloader has already run - do what you want to do here
但是,如果您希望在加载过程中的任何时候 except都发生这种行为,那么这个条件就有点复杂了:
if not app.debug or os.environ.get("WERKZEUG_RUN_MAIN") == "true": # The app is not in debug mode or we are in the reloaded process