Отладка ошибок приложения
В рабочей среде
Не запускайте сервер разработки или встроенный отладчик в рабочей среде. Отладчик позволяет выполнять произвольный Python-код из браузера. Он защищён пином, но нельзя полагаться на это для обеспечения безопасности.
Используйте инструмент ведения журнала ошибок, такой как Sentry, как описано в Инструменты ведения журнала ошибок, или включите протоколирование и уведомления, как описано в Протоколирование.
Если у вас есть доступ к серверу, вы можете добавить код для запуска внешнего отладчика, если request.remote_addr соответствует вашему IP-адресу. Некоторые отладчики IDE также имеют режим удалённого подключения, так что к точкам останова на сервере можно взаимодействовать локально. Включайте отладчик только временно.
Встроенный отладчик
Встроенный сервер разработки Werkzeug предоставляет отладчик, который отображает интерактивный трассировку в браузере, когда во время запроса возникает необработанная ошибка. Этот отладчик следует использовать только во время разработки.
Предупреждение
Отладчик позволяет выполнять произвольный Python-код из браузера. Он защищён пином, но всё равно представляет собой значительный риск для безопасности. Не запускайте сервер разработки или отладчик в рабочей среде.
Отладчик включён по умолчанию, когда сервер разработки запущен в режиме отладки.
$ flask --app hello --debug run
При запуске из кода Python, передача debug=True включает режим отладки, который в основном эквивалентен.
app.run(debug=True)
Сервер разработки и Командная строка содержат дополнительную информацию о запуске отладчика и режиме отладки. Дополнительную информацию об отладчике можно найти в документации Werkzeug.
Внешние отладчики
Внешние отладчики, такие как те, которые предоставляются IDE, могут предложить более мощный опыт отладки, чем встроенный отладчик. Их также можно использовать для пошаговой отладки кода во время запроса перед возникновением ошибки или если ошибка не возникает. Некоторые даже имеют режим удалённого подключения, так что вы можете отлаживать код, работающий на другом компьютере.
При использовании внешнего отладчика приложение всё равно должно быть в режиме отладки, но может быть полезно отключить встроенный отладчик и релоадер, которые могут мешать.
$ flask --app hello --debug 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.2.x/debugging/