Подтвердить что ты не робот

Как остановить Flask от инициализации дважды в режиме отладки?

При создании службы Flask в Python и установке режима отладки служба Flask будет инициализироваться дважды. Когда инициализация загружает кеши и т.п., это может занять некоторое время. Для этого дважды требуется раздражение в режиме разработки (отладки). Когда отладка отключена, служба флагов только инициализируется один раз.

Как остановить Flask от инициализации дважды в режиме отладки?

4b9b3361

Ответ 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

Ответ 2

Вы можете использовать before_first_request hook:

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