如何停止烧瓶初始化两次在调试模式?

当用 Python 构建 Flask 服务并设置调试模式时,Flask 服务将初始化两次。当初始化加载缓存和类似的东西时,这可能需要一段时间。在开发(调试)模式下,必须这样做两次是很烦人的。当调试关闭时,Flask 服务只初始化一次。

如何停止烧瓶初始化两次在调试模式?

51751 次浏览

你可以使用 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)

或者,您可以检查环境中 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