Как вы собираетесь отлаживать ошибки в Flask? Печать на консоль? Всплывающие сообщения на страницу? Или есть более мощный вариант, чтобы выяснить, что происходит, когда что-то идет не так?Как отладить приложение Flask
ответ
app.run(debug=True)
для Werkzeug Debugger как указано ниже, и я должен был знать.
На самом деле, когда вы работаете с 'debug = True', вы на самом деле используете Werkzeug debuger, так что это не либо - или ;-) –
Ha, вы правы. Наверное, я должен был посмотреть на setup.py Flask для требований. Я использую модифицированную копию его для работы в GAE, где вы должны инициализировать Werkzeug вручную. – bnlucas
Я установил app.run (debug = True), если я распечатаю xyz, где он печатает, спасибо – Kimmy
Запуск приложения в режиме отладки (app.debug = True
или app.run(debug=True)
или FLASK_DEBUG=1 flask run
) отобразит интерактивную трассировку и консоль в браузере при возникновении ошибки.
Если вы используете PyCharm, вы можете воспользоваться его отладчиком, чтобы выполнить код с помощью контрольных точек. Просто убедитесь, что вы отключили отладчик Werkzeug и перезагрузили код. Конфигурация запуска должна указывать на скрипт, который запускает app.run(debug=True, use_debugger=False, use_reloader=False)
. Вы можете оставить use_reloader=True
, но перезагрузка убьет контекст отладки, и вам придется снова поймать точку останова.
Да. Но что, если вы не используете браузер, например? для API REST? –
Как уже упоминалось во второй половине, используйте отладчик PyCharm (или другой отладчик). – davidism
Спасибо, я посмотрю на PyCharm. Интерактивная оболочка Python всегда была достаточной для того, чтобы я не играл с IDE для Python, но, возможно, это катализатор. И тем не менее, кажется еще более естественным отлаживать оболочку - оболочку _real_, а не какую-либо притворную оболочку в браузере, насколько это возможно. Я чувствую, что мне так или иначе не хватает очевидного способа сделать это для приложений Flask. –
Из 0.11
documentation, вы можете включить режим отладки, экспортируя переменную окружения:
export FLASK_APP=/daemon/api/views.py # path to app
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Этот ответ был бы более полезным, если бы он объяснил, что на самом деле режим отладки. Это делает больше, чем позволяет отлаживать в браузере? К сожалению, поскольку я работаю над REST API, это не очень помогает мне. –
Если вы работаете локально и хотите, чтобы иметь возможность пройти через код:
python -m pdb script.py
Также можно использовать расширение Flask Debug Toolbar, чтобы получить более подробную информацию, встроенную в отображаемые страницы.
from flask import Flask
from flask_debugtoolbar import DebugToolbarExtension
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
Получение следующей ошибки. «NameError: имя« logging »не определено» –
@AshwinYaprala 'import logging' (из стандартной библиотеки Python). Но это не требуется. Просто удалите строку 'logging ... '. –
Там нет ничего магического 'app.run()' (либо с отладки включен или выключен). Flask ведет себя как любое другое приложение python, поэтому вы можете отлаживать его так же, как вы отлаживаете приложение Python. Если вы хотите использовать ведение журнала, используйте журнал. Если вы хотите печатать, используйте отпечатки. Вы даже можете использовать отладчик, если хотите. –