385 Stimmen

Automatisches Neu laden der Python Flask-App bei Code-Änderungen

Ich untersuche, wie man eine anständige Web-App mit Python entwickeln kann. Da ich nicht möchte, dass mir einige hochrangige Strukturen im Weg stehen, fiel meine Wahl auf das leichtgewichtige Flask-Framework. Die Zeit wird zeigen, ob dies die richtige Wahl war.

Also habe ich jetzt einen Apache-Server mit mod_wsgi eingerichtet, und meine Testseite läuft gut. Allerdings möchte ich den Entwicklungsprozess beschleunigen, indem die Seite automatisch neu geladen wird, wenn ich Änderungen an den py- oder Template-Dateien vornehme. Ich sehe, dass jede Änderung an der .wsgi-Datei der Seite zu einem Neuladen führt (auch ohne WSGIScriptReloading On in der Apache-Konfigurationsdatei), aber ich muss es immer noch manuell anstoßen (d.h. zusätzliche Zeilenumbrüche einfügen, speichern). Gibt es eine Möglichkeit, das Neuladen zu verursachen, wenn ich einige der App-Py-Dateien bearbeite? Oder soll ich einen IDE verwenden, der die .wsgi-Datei für mich aktualisiert?

3voto

Asim Fakhi Punkte 51

Flask-Anwendungen können optional im Debug-Modus ausgeführt werden. In diesem Modus sind standardmäßig zwei sehr praktische Module des Entwicklungsservers namens der Neulader und der Debugger aktiviert. Wenn der Neulader aktiviert ist, überwacht Flask alle Quellcode-Dateien Ihres Projekts und startet den Server automatisch neu, wenn eine der Dateien geändert wird.

Standardmäßig ist der Debug-Modus deaktiviert. Um ihn zu aktivieren, legen Sie eine Umgebungsvariable FLASK_DEBUG=1 fest, bevor Sie flask run aufrufen:

(venv) $ export FLASK_APP=hello.py für Windows verwenden Sie > set FLASK_APP=hello.py

(venv) $ export FLASK_DEBUG=1 für Windows verwenden Sie > set FLASK_DEBUG=1

(venv) $ flask run

* Serving Flask app "hello"
* Forcing debug mode on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 273-181-528

Ein Server mit dem Neulader aktiviert ist während der Entwicklung äußerst nützlich, da der Server jedes Mal automatisch neu startet und die Änderung übernimmt, wenn Sie eine Quellcodedatei ändern und speichern.

2voto

blue-sky Punkte 48726

Um dies in PyCharm zu erreichen, setzen Sie den Abschnitt 'Umgebungsvariablen' auf:

PYTHONUNBUFFERED=1;
FLASK_DEBUG=1

Für Flask 'Ausführen / Debuggen Konfigurationen'.

1voto

jeffasante Punkte 501

Um bei schnellen automatischen Änderungen im Browser zu helfen:

pip install livereload

from livereload import Server

if __name__ == '__main__':
    server = Server(app.wsgi_app)
    server.serve()

Starten Sie dann Ihren Server erneut:

Zum Beispiel ist Ihre .py Datei app.py

python app.py

1voto

Avinash Punkte 101

Befehl für virtuelle Umgebung

flask run --debug

0voto

b8con Punkte 459

Ich glaube, eine bessere Lösung ist es, die App-Konfiguration einzustellen. Für mich habe ich das Tool gebaut und dann auf einen Entwicklungsserver geschoben, wo ich eine WSGI-Pipeline einrichten musste, um die Flask-Web-App zu verwalten. Ich hatte einige Daten, die in ein Template aktualisiert wurden, und ich wollte, dass es alle X Minuten aktualisiert wird (WSGI-Bereitstellung für die Flask-Site über APACHE2 auf UBUNTU 18). In deiner app.py oder wo auch immer deine Haupt-App ist, füge das app.config.update-Dictionary unten hinzu und setze TEMPLATES_AUTO_RELOAD=True, du wirst feststellen, dass alle Vorlagen, die automatisch auf dem Server aktualisiert werden, im Browser angezeigt werden. Es gibt eine großartige Dokumentation auf der Flask-Website für Konfigurations-Handling, die hier gefunden werden kann.

app = Flask(__name__)
app.config.update(
    TEMPLATES_AUTO_RELOAD=True
)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X