Flask-app “Herstarten met stat”

Ik heb een paar Flask-apps gebouwd, maar bij mijn laatste project merkte ik iets vreemds op in de ontwikkelingsmodus. De tweede regel van het gebruikelijke bericht in de terminal die altijd luidt:

* Running on http://127.0.0.1:5000/
 * Restarting with reloader

is vervangen door:

* Restarting with stat

Ik denk niet dat ik iets anders heb gedaan, sterker nog, ik ben begonnen met het klonen van een starterskit-project dat ik vaak heb gebruikt en dat zelf dit gedrag niet vertoont. Ik merk ook dat dit project gestaag ongeveer 15% CPU verbruikt, terwijl mijn andere project nauwelijks een blip is.

Enig idee waarom dit gebeurt?


Antwoord 1, autoriteit 100%

Controleer uw versie van Werkzeug. Versie 0.10 is zojuist uitgebracht en er zijn talloze wijzigingen doorgevoerd in de reloader. Een verandering is dat er een standaard polling reloader wordt gebruikt; de oude pyinotify-reloader was blijkbaar onnauwkeurig. Als u efficiënter wilt peilen, installeer dan het pakket watchdog. Je kunt de code gerelateerd aan deze hier.

Als Werkzeug watchdog niet kan vinden, gebruikt het de statreloader, anders gebruikt het de reloader watchdog die gebruikt wordt, wat per platform kan verschillen. Dit bericht is alleen bedoeld om u te laten weten welke in gebruik is.


Watchdog is mogelijk niet compatibel met gevent. Als je gevent gebruikt en problemen hebt met de reloader bij het gebruik van Watchdog, controleer dan dit GitHub-probleem.


Antwoord 2, autoriteit 75%

Gebruik run(use_reloader=False)om de herlader uit te schakelen.

Het gaf me een aantal problemen waarbij het mijn serverbestand niet kon vinden toen het opnieuw werd opgestart. Dit deed de truc. Het is maar één keer uitgevoerd en alles werkte. Heel vreemd.


Antwoord 3, autoriteit 26%

Als je met app.run(debug=True)draait, zal het de reloader uitvoeren als onderdeel van de foutopsporingsmodus. Als je de foutopsporingsmodus niet wilt gebruiken, geef dan debug=Falsedoor of helemaal niet.


Antwoord 4

mijn bestandsnaam was __main__.py en ik heb het als zodanig geëxporteerd: export FLASK_APP=__main__.py
Na het veranderen van de naam in app.py en het opnieuw exporteren, werkte het.

Other episodes