Запрос @before_request для Flask выполняется более одного раза

#python #flask

#python #flask

Вопрос:

Я добавил app.logger.error('test') inside my @app.before_request и заметил, что в моем журнале до 8 строк test на запрос, даже если это просто abort(500) . Я просто не могу понять, почему, что может вызвать это?

Ответ №1:

Если вы запускаете app.debug = True и обслуживаете медиафайлы (изображения, css, js и т.д.) из Flask, они также считаются полными запросами. Если это не так, пожалуйста, предоставьте дополнительную информацию о вашей настройке.

Комментарии:

1. Я обслуживаю медиафайлы, которые хранятся в /static/ , режим отладки, похоже, не имеет значения, результат тот же. Это довольно стандартная программа Flask (0.7.2), на самом деле не так много настроек. Я использую Mako для некоторых шаблонов, но, похоже, это не проблема.

2. Я только что проверил, и похоже, что app.debug не останавливает это. Запросы на статические файлы по-прежнему отправляются в Flask. Однако я почти уверен, что причина, по которой он появляется несколько раз в вашем регистраторе, заключается в том, что before_request по-прежнему применяется к статическим файлам. Обычно вы позволяете своему веб-серверу (Apache, nginx) обрабатывать статический файл, обслуживаемый в рабочей среде, и тогда этого не произойдет. Извините за путаницу! 🙂

3. Ах, хорошо, по крайней мере, я знаю, что вызывает это сейчас, спасибо. Я думаю, это одна из причин, по которой документация рекомендует не использовать встроенный сервер в рабочей среде.