Odpowiedzi:
Uruchomienie aplikacji w trybie programistycznym spowoduje wyświetlenie interaktywnego śledzenia i konsoli w przeglądarce, gdy wystąpi błąd. Aby uruchomić w trybie programistycznym, ustaw FLASK_ENV=development
zmienną środowiskową, a następnie użyj flask run
polecenia (pamiętaj, aby wskazać FLASK_APP
również swoją aplikację).
W przypadku systemów Linux, Mac, Linux Subsystem dla Windows, Git Bash w systemie Windows itp .:
export FLASK_APP=myapp
export FLASK_ENV=development
flask run
W przypadku Windows CMD set
zamiast eksportu użyj :
set FLASK_ENV=development
W przypadku programu PowerShell użyj $env
:
$env:FLASK_ENV = "development"
Przed wersją Flask 1.0 było to kontrolowane przez FLASK_DEBUG=1
zmienną środowiskową.
Jeśli używasz app.run()
metody zamiast flask run
polecenia, przekaż, debug=True
aby włączyć tryb debugowania.
Dane śledzenia są również drukowane na terminalu, na którym działa serwer, niezależnie od trybu programowania.
Jeśli używasz PyCharm, VS Code itp., Możesz skorzystać z jego debugera, aby przejść przez kod z punktami przerwania. Konfiguracja uruchamiania może wskazywać na wywołanie skryptu app.run(debug=True, use_reloader=False)
lub wskazywać go na venv/bin/flask
skrypt i używać go tak, jak z wiersza poleceń. Możesz pozostawić przeładowanie wyłączone, ale przeładowanie zabije kontekst debugowania i będziesz musiał ponownie złapać punkt przerwania.
Możesz także użyć pdb, pudb lub innego debuggera terminala, wywołując set_trace
widok, w którym chcesz rozpocząć debugowanie.
Pamiętaj, aby nie używać zbyt szerokich z wyjątkiem bloków. Otoczenie całego kodu znakiem catch-all try... except...
spowoduje wyciszenie błędu, który chcesz debugować. Ogólnie jest to niepotrzebne, ponieważ Flask będzie już obsługiwał wyjątki, pokazując debugger lub błąd 500 i drukując dane śledzenia do konsoli.
Możesz użyć app.run(debug=True)
do edycji Werkzeug Debugger, jak wspomniano poniżej, i powinienem był wiedzieć.
debug=True
biegasz z tobą, faktycznie używasz debugera Werkzeug, więc nie jest to albo-albo ;-)
print 'xyz'
spowoduje wydrukowanie na konsoli. Jeśli chcesz debugować w przeglądarce, będziesz musiał wymusić błąd w miejscu, w którym chcesz debugować. raise Exception('xyz')
. Spowoduje to wyświetlenie debugowania w oknie przeglądarki.
W 1.1.x
dokumentacji możesz włączyć tryb debugowania, eksportując zmienną środowiskową do zachęty powłoki:
export FLASK_APP=/daemon/api/views.py # path to app
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Można również użyć rozszerzenia Flask Debug Toolbar, aby uzyskać bardziej szczegółowe informacje osadzone na renderowanych stronach.
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>"
Uruchom aplikację w następujący sposób:
FLASK_APP=main.py FLASK_DEBUG=1 flask run
Jeśli używasz Visual Studio Code, zamień
app.run(debug=True)
z
app.run()
Pojawia się po włączeniu wewnętrznego debugera wyłącza debuger VS Code.
Jeśli chcesz debugować aplikację flask, po prostu przejdź do folderu, w którym znajduje się aplikacja flask. Nie zapomnij aktywować swojego wirtualnego środowiska i wkleić linie w konsoli zmień "mainfilename" na główny plik flask.
export FLASK_APP="mainfilename.py"
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Po włączeniu debugera dla aplikacji flask prawie każdy błąd zostanie wydrukowany na konsoli lub w oknie przeglądarki. Jeśli chcesz dowiedzieć się, co się dzieje, możesz użyć prostych instrukcji print lub też użyć console.log () dla kodu javascript.
Zainstaluj python-dotenv
w swoim wirtualnym środowisku.
Utwórz plik .flaskenv w katalogu głównym projektu. Przez katalog główny projektu rozumiem folder zawierający plik app.py
Wewnątrz tego pliku napisz:
FLASK_APP=myapp
FLASK_ENV=development
Teraz wydaj następujące polecenie:
flask run
Korzystaj z loggerów i drukuj instrukcje w środowisku programistycznym, możesz przejść do wartownika w przypadku środowisk produkcyjnych.
Jeśli uruchamiasz go lokalnie i chcesz mieć możliwość przechodzenia przez kod:
python -m pdb script.py
app.run()
(zarówno z włączonym, jak i wyłączonym debugowaniem). Flask zachowuje się jak każda inna aplikacja w Pythonie, więc możesz ją debugować w ten sam sposób, w jaki debugujesz dowolną aplikację w Pythonie. Jeśli chcesz korzystać z logowania, użyj logowania. Jeśli chcesz drukować, używaj odbitek. Jeśli chcesz, możesz nawet użyć debugera.