一尘不染

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

flask

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

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


阅读 667

收藏
2020-04-05

共1个答案

一尘不染

在这里要做的最简单的事情就是将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
2020-04-05