如何在调试模式下阻止Flask初始化两次?

时间:2012-02-25 23:35:02

标签: python flask

在Python中构建Flask服务并设置调试模式时,Flask服务将初始化两次。当初始化加载高速缓存等时,这可能需要一段时间。在开发(调试)模式下,必须执行此操作两次都很烦人。当调试关闭时,Flask服务仅初始化一次。

如何在调试模式下停止Flask初始化两次?

2 个答案:

答案 0 :(得分:109)

这里最简单的方法是在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

但是,当您希望在加载过程中之外的任何时候发生这种情况时,情况会更复杂:

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

答案 1 :(得分:17)

您可以使用before_first_request挂钩:

@app.before_first_request
def initialize():
    print "Called only once, when the first request comes in"