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

Как отладить приложение Flask

Как вы собираетесь отлаживать ошибки в Flask? Печать на консоль? Всплывающие сообщения на страницу? Или есть более мощный вариант, чтобы выяснить, что происходит, когда что-то идет не так?

4b9b3361

Ответ 1

Запуск приложения в режиме разработки отобразит интерактивную трассировку и консоль в браузере при возникновении ошибки. Чтобы запустить в режиме разработки, установите переменную среды FLASK_ENV=development затем используйте команду flask run FLASK_APP (не забудьте также указать FLASK_APP на ваше приложение).

Для Linux, Mac, подсистемы Linux для Windows, Git Bash для Windows и т. Д.:

export FLASK_APP=myapp
export FLASK_ENV=development
flask run

Для Windows CMD, использовать set вместо экспорта:

set FLASK_ENV=development

Для PowerShell используйте $env:

$env:FLASK_ENV = "development"

До Flask 1.0 вместо этого он управлялся переменной среды FLASK_DEBUG=1.

Если вы используете метод app.run() вместо команды flask run флажка, пропустите debug=True чтобы включить режим отладки.

Трассировки также печатаются на терминале, на котором запущен сервер, независимо от режима разработки.

Если вы используете PyCharm, VS Code и т.д., Вы можете воспользоваться своим отладчиком, чтобы выполнить код с точками останова. Конфигурация запуска может указывать на сценарий, вызывающий app.run(debug=True, use_reloader=False) или venv/bin/flask его на venv/bin/flask и использовать его так же, как и в командной строке. Вы можете отключить перезагрузку, но перезагрузка убьет контекст отладки, и вам придется снова поймать точку останова.

Вы также можете использовать pdb, pudb или другой отладчик терминала, вызывая set_trace в представлении, где вы хотите начать отладку.


Не используйте слишком широкие, кроме блоков. Окружающий весь ваш код с помощью всей try... except... отключит ошибку, которую вы хотите отлаживать. Это вообще не нужно, поскольку Flask уже обрабатывает исключения, показывая отладчик или ошибку 500 и печатает трассировку на консоль.

Ответ 2

Вы можете использовать app.run(debug=True) для Werkzeug Debugger изменить, как указано ниже, и я должен был знать.

Ответ 3

В 0.11 документации вы можете включить режим отладки, экспортировав переменную среды:

export FLASK_APP=/daemon/api/views.py  # path to app
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0

Ответ 4

Если вы используете код Visual Studio, замените

app.run(debug=True)

с

app.run()

При включении внутреннего отладчика он отключает отладчик VS Code.

Ответ 5

Можно также использовать расширение панели флагов Debug, чтобы получить более подробную информацию, встроенную в отображаемые страницы.

from flask import Flask
from flask_debugtoolbar import DebugToolbarExtension
import logging

app = Flask(__name__)
app.debug = True
app.secret_key = 'development key'

toolbar = DebugToolbarExtension(app)

@app.route('/')
def index():
    logging.warning("See this message in Flask Debug Toolbar!")
    return "<html><body></body></html>"

Запустите приложение следующим образом:

FLASK_APP=main.py FLASK_DEBUG=1 flask run

Ответ 6

Если вы хотите отладить приложение Flak, просто перейдите в папку, в которой находится приложение фляги, не забудьте активировать виртуальную среду и вставить строки в консоли, изменив "mainfilename" на основной файл фляги.

export FLASK_APP="mainfilename.py"
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0

После того, как вы включите отладчик для приложения фляги, почти каждая ошибка будет напечатана на консоли или в окне браузера. Если вы хотите выяснить, что происходит, вы можете использовать простые операторы печати или также использовать console.log() для кода javascript.

Ответ 7

Если вы используете его локально и хотите выполнить код:

python -m pdb script.py

Ответ 8

Быстрый совет - если вы используете PyCharm, перейдите в Edit Configurations => Configurations и включите флажок FLASK_DEBUG, перезапустите Run.

Ответ 9

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

Ответ 10

Установите python-dotenv в вашей виртуальной среде.

Создайте .flaskenv в корне вашего проекта. Под корнем проекта я имею в виду папку с файлом app.py

Внутри этого файла напишите следующее:

FLASK_APP=myapp 
FLASK_ENV=development

Теперь введите следующую команду:

flask run