在Python中构建Flask服务并设置调试模式时,Flask服务将初始化两次。当初始化加载高速缓存等时,这可能需要一段时间。在开发(调试)模式下,必须执行此操作两次都很烦人。当调试关闭时,Flask服务仅初始化一次。
如何在调试模式下停止Flask初始化两次?
答案 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"