Отладка ошибок приложения
В рабочей среде
Не запускайте сервер разработки или встроенный отладчик в рабочей среде. Отладчик позволяет выполнять произвольный код Python из браузера. Он защищен пином, но это не должно использоваться для обеспечения безопасности.
Используйте инструмент ведения журнала ошибок, такой как Sentry, как описано в Инструменты ведения журналов ошибок, или включите ведение журнала и уведомления, как описано в Ведение журнала.
Если у вас есть доступ к серверу, вы можете добавить код для запуска внешнего отладчика, если request.remote_addr соответствует вашему IP-адресу. Некоторые отладчики IDE также имеют режим удаленного подключения, поэтому к точкам останова на сервере можно взаимодействовать локально. Включайте отладчик только временно.
Встроенный отладчик
Встроенный сервер разработки Werkzeug предоставляет отладчик, который отображает интерактивный трассировку в браузере, когда во время запроса возникает необработанная ошибка. Этот отладчик следует использовать только во время разработки.
Предупреждение
Отладчик позволяет выполнять произвольный код Python из браузера. Он защищен пином, но все равно представляет собой значительный риск безопасности. Не запускайте сервер разработки или отладчик в рабочей среде.
Чтобы включить отладчик, запустите сервер разработки с переменной среды FLASK_ENV установленной в development. Это помещает Flask в режим отладки, который изменяет способ обработки некоторых ошибок, а также включает отладчик и перезагрузчик.
$ export FLASK_ENV=development $ flask run
$ set -x 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 -x 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–2022 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/2.1.x/debugging/