Spec-Zone.ru › Flask 2.0

Отладка ошибок приложения

В рабочей среде

Не запускайте сервер разработки или встроенный отладчик в рабочей среде. Отладчик позволяет выполнять произвольный Python-код из браузера. Он защищен пином, но на этом не следует полагаться для обеспечения безопасности.

Используйте инструмент ведения журнала ошибок, такой как Sentry, как описано в Инструменты ведения журналов ошибок, или включите ведение журнала и уведомления, как описано в Ведение журнала.

Если у вас есть доступ к серверу, вы можете добавить код для запуска внешнего отладчика, если request.remote_addr соответствует вашему IP-адресу. Некоторые отладчики IDE также имеют режим удаленного подключения, так что к точкам останова на сервере можно взаимодействовать локально. Включайте отладчик только временно.

Встроенный отладчик

Встроенный сервер разработки Werkzeug предоставляет отладчик, который отображает интерактивный трассировочный вывод в браузере при возникновении необработанной ошибки во время запроса. Этот отладчик следует использовать только во время разработки.

screenshot of debugger in action

Предупреждение

Отладчик позволяет выполнять произвольный Python-код из браузера. Он защищен пином, но все равно представляет собой серьезную угрозу безопасности. Не запускайте сервер разработки или отладчик в рабочей среде.

Для включения отладчика запустите сервер разработки с переменной окружения FLASK_ENV , установленной в значение development. Это помещает Flask в режим отладки, который изменяет способ обработки некоторых ошибок, и включает отладчик и перезагрузчик.

$ export FLASK_ENV=development
$ flask run
> set FLASK_ENV=development
> flask run
> $env:FLASK_ENV = "development"
> flask run

FLASK_ENV может быть установлена только как переменная окружения. При запуске из Python-кода передача debug=True включает режим отладки, который в основном эквивалентен. Режим отладки может быть контролироваться отдельно от FLASK_ENV с помощью переменной окружения FLASK_DEBUG.

app.run(debug=True)

Сервер разработки и Интерфейс командной строки содержат более подробную информацию о запуске отладчика, режиме отладки и режиме разработки. Дополнительную информацию об отладчике можно найти в документации Werkzeug.

Внешние отладчики

Внешние отладчики, такие как те, которые предоставляются IDE, могут обеспечить более мощный опыт отладки, чем встроенный отладчик. Их также можно использовать для пошагового выполнения кода во время запроса до возникновения ошибки или если ошибка не возникла. Некоторые даже имеют режим удаленного подключения, так что вы можете отлаживать код, работающий на другом компьютере.

При использовании внешнего отладчика приложение должно быть все еще в режиме отладки, но может быть полезно отключить встроенный отладчик и перезагрузчик, которые могут мешать.

При запуске из командной строки:

$ export FLASK_ENV=development
$ flask run --no-debugger --no-reload
> set FLASK_ENV=development
> flask run --no-debugger --no-reload
> $env:FLASK_ENV = "development"
> flask run --no-debugger --no-reload

При запуске из Python:

app.run(debug=True, use_debugger=False, use_reloader=False)

Отключение этих параметров не требуется, внешний отладчик продолжит работать с соответствующими оговорками. Если встроенный отладчик не отключен, он перехватит необработанные исключения до того, как сможет внешняя отладка. Если перезагрузчик не отключен, он может вызвать неожиданную перезагрузку, если код изменится во время отладки.

© 2007–2021 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/2.0.x/debugging/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API