Ошибка API фляг [dубликат]

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

56
задан 29 June 2015 в 18:26

5 ответов

В документации 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
7
ответ дан 15 August 2018 в 15:57
  • 1
    Этот ответ был бы более полезным, если бы он объяснил, что на самом деле режим отладки. Это делает больше, чем позволяет отлаживать в браузере? К сожалению, поскольку я работаю над REST API, это не очень помогает мне. – Michael Scheper 12 April 2017 в 22:47

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

12
ответ дан 15 August 2018 в 15:57
  • 1
    На самом деле, когда вы работаете с debug=True, вы фактически используете отладчик Werkzeug, поэтому он не является ни одним из них ;-) – Sean Vieira 26 June 2013 в 06:02
  • 2
    Ха, ты прав. Наверное, я должен был посмотреть на setup.py Flask для требований. Я использую модифицированную копию его для работы в GAE, где вы должны инициализировать Werkzeug вручную. – bnlucas 26 June 2013 в 06:05
  • 3
    Я установил app.run (debug = True), если я печатаю xyz, где он печатает, спасибо – Kimmy 28 June 2013 в 16:40
  • 4
    Использование print 'xyz' будет печататься на консоли. Если вы хотите отлаживать в браузере, вам нужно будет принудительно вызвать ошибку, где вы хотите отлаживать. [F2]. Это вызовет вывод отладки в окне браузера. – bnlucas 28 June 2013 в 20:09

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

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
61
ответ дан 15 August 2018 в 15:57
  • 1
    Получение следующей ошибки. & quot; NameError: name 'logging' не определено & quot; – Ashwin Yaprala 27 August 2017 в 11:24
  • 2
    @AshwinYaprala import logging (из стандартной библиотеки Python). Но это не требуется. Просто удалите строку logging .... – turdus-merula 28 August 2017 в 21:47

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

app.run(debug=True)

на

app.run()

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

3
ответ дан 15 August 2018 в 15:57
  • 1
    Можете ли вы поделиться примером рабочей установки? У меня уже установлен FLASK_APP в моем env, и конфигурация по умолчанию не работает. Я пробовал этот - pastebin.com/v8hBQ2vv и ряд подобных перестановок, но безрезультатно. – Brandon Dube 31 May 2018 в 21:57

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

python -m pdb script.py

0
ответ дан 15 August 2018 в 15:57

Другие вопросы по тегам:

Похожие вопросы: