Flask + mod_wsgi automatisches Neuladen bei Änderung des Quellcodes

8

Weiß jemand, wie man ein mod_wsgi automatisch eine Flask-App neu lädt, wenn sich eines der Module ändert? Ich habe WSGIScriptReloading On ausprobiert, aber kein Glück. Die offizielle Dokumentation ist ein bisschen ein Bär ... Ich schätze, ich gebe einen Stich, wenn nein man weiß. Vielen Dank im Voraus!

Wenn es bei Syntaxfehlern (wie dem Flask-Reloader) nicht dauerhaft abstürzen könnte, wäre das großartig.

    
gatoatigrado 23.11.2012, 00:35
quelle

6 Antworten

11

Mit mod_wsgi sucht WSGIScriptReloading nach Änderungen an der Konfigurationsdatei .wsgi anstatt nach dem Code.

Mein Workflow besteht darin, meine Codeänderungen nur noch

hochzuladen %Vor%

bewirkt, dass der Zeitstempel der letzten geänderten Datei geändert wird und mod_wsgi den Code erneut lädt.

Sie können dies "remote" tun, indem Sie die .wsgi -Datei auf Ihrem lokalen Rechner speichern und dann erneut hochladen, oder ich mache das einfach per SSH.

Sie können nicht viel mit Syntaxfehlern machen, der Code läuft entweder oder ist es nicht, aber ein Fix plus ein touch bringt es wieder zum Laufen.

Man muss darauf achten, ob Sie über FTP arbeiten: Stellen Sie sicher, dass Sie die 'berührte' .wsgi Datei zuletzt hochladen , sonst wird es mit dem falschen Code beginnen.

    
MalphasWats 28.11.2012 13:09
quelle
1

Ich denke, es ist eine sehr realistische Situation, Quellcode automatisch in der Produktion neu laden zu wollen. Stellen Sie sich eine Umgebung vor, in der Quellen pro Version bereitgestellt werden und ein Symlink für die Produktion auf eine dieser Versionen verweist. Wann immer Sie eine neuere Version veröffentlichen möchten, zeigen Sie einfach den Symlink auf einen anderen Pfad. Apache und mod_wsgi sammeln jedoch immer noch die Dateien aus dem symlinked-Verzeichnis und müssen daher einen Neulade-Mechanismus basierend auf Zeitstempeln, Größe oder w / e haben. Sicher, eine Anwendung ist vielleicht kein Problem, aber was ist mit dem Hosting von 15-20 Anwendungen, die alle aktiv entwickelt werden? Ein automatisches Nachladen von Quellen ist in solchen Situationen ein reiner Verlust, verglichen mit einem wiederholten Neustart des Apache.

Zurück zur Frage: Wenn das von Ihnen verwendete Framework (in diesem Fall "flask") kein Plugin oder Tool zum automatischen Nachladen von Quellcode enthält, sind die beiden von Graham und Malphas beschriebenen Optionen die besten Optionen. Entweder triggern Sie den wsgi-Prozess, um neu zu starten oder ein Überwachungssystem zu implementieren.

    
Rogier van der Wel 13.12.2012 13:36
quelle
1

Sie haben recht, wenn Sie die WSGIScriptReloading-Anweisung hinzufügen. Die Flask-Dokumente machen es nicht 100% klar, aber Apache sucht nach Änderungen an Ihrer .wsgi-Datei. Die empfohlene Lösung besteht darin, einfach einen Touch-Befehl in Ihrer .wsgi-Datei als Teil Ihres Veröffentlichungsprozesses auszuführen.

    
Simon Jakowicz 19.07.2014 13:20
quelle
0

Was meinst du, die offizielle Dokumentation ist eine Art Bär? Was ist falsch mit dem mitgelieferten Rezept:

Dieses Dokument erklärt auch, warum WSGIScriptReloading nicht das tut, was Sie erwarten.

Und nein, es ist nicht möglich, bei Syntaxfehlern dauerhaft abzustürzen. Es ist in Apache eingebettet und der ganze Sinn von Apache ist es, die Dinge am Laufen zu halten.

Klingt so, als sollten Sie Apache / mod_wsgi nicht für die Entwicklung verwenden. Jeder weiß, dass man in der Produktion kein automatisches Quellcode-Nachladen verwenden sollte, also kann ich mir nicht vorstellen, dass man das tun möchte.

    
Graham Dumpleton 23.11.2012 09:30
quelle
0

Für die Produktion bevorzuge ich auch apache mod_wsgi, während ich für die Entwicklung den eingebauten Server des Kolbens verwende. Ich spalte prod und dev config Dateien und setze die debug Direktive True in der Dev-Konfiguration, so dass Flask Codeänderungen automatisch erkennen und neu laden kann.

    
Muatik 17.04.2015 09:41
quelle
0

Die richtige Antwort auf diese Frage ist, dass WSGIScriptReloading On zu 000-default.conf unter /etc/apache2/sites-enabled hinzugefügt werden muss.

Siehe Beispiel unten

%Vor%     
Sarang 06.03.2018 18:39
quelle

Tags und Links