How to stop Flask from initialising twice in Debug Mode?
The simplest thing to do here would be to add use_reloader=False
to your call to app.run
- that is: app.run(debug=True, use_reloader=False)
Alternatively, you can check for the value of WERKZEUG_RUN_MAIN
in the environment:
if os.environ.get("WERKZEUG_RUN_MAIN") == "true":
# The reloader has already run - do what you want to do here
However, the condition is a bit more convoluted when you want the behavior to happen any time except in the loading process:
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
You can use the before_first_request
hook:
@app.before_first_request
def initialize():
print "Called only once, when the first request comes in"