-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: watch mode for run
command
#110
Conversation
Hab den Code in d9b6c14 jetzt noch mal refaktorisiert. Die wichtigsten Änderungen:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ich glaube die Implementierung lässt sich recht stark vereinfachen:
- Die Trennung der Logik in
start_watching
/__aenter__
undrun_forever
erlaubt zwar theoretisch, andere Dinge vor, nach oder statt des Webservers zu machen, dafür haben wir aber zumindest aktuell keinen Use-Case und ich kann mir kurzfristig keinen vorstellen. Wenn du auch keinen hast, würde ich vorschlagen,Watcher
in eine Funktion (oder wenige, aber halt nicht X Mathoden) zu vereinen. - Ich glaube es reicht ein
asyncio.Event
statt einerCondition
, oder? - Ich vermute es ist nicht nötig, den Debouncer und Observer jedes mal komplett zu stoppen und neu zu starten. Eine Flag
ignore_all_events: bool
würde doch ausreichen? Ansonsten bietet watchdog auch eineunschedule
-Methode.
Ja, siehe auch Kommentor oben. Der Use-Case war halt, dass die Klasse grundsätzlich auch separat verwendet werden kann. Aber keine Ahnung, wie wichtig das ist. Hab's mal rausgenommen.
Da bin ich mir nicht 100% sicher. Es könnte eine Race condition geben zwischen Die Verwendung eines Locks schien mir am sichersten in dem Fall, da ausgeschlossen ist, dass einkommende Events irgendwie zum Zug kommen während gerade ein Rebuild/Server-Restart passiert. Hab's mal mit einem
Das war vor der letzten Refaktorisierung auch so implementiert. Die Idee dahinter war, dass wenn man builds hat die zehntausende Dateien erzeugen, verändern (npm, etc.), man während des Builds eine große Anzahl unnützer Events hat, die man dropped. Hab es jetzt mit |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Die Verwendung eines Locks schien mir am sichersten in dem Fall, da ausgeschlossen ist, dass einkommende Events irgendwie zum Zug kommen während gerade ein Rebuild/Server-Restart passiert.
Da du korrekterweise das Event erst clear()
st, nachdem Rebuild und Restart durch sind, sollten seitere set()
s währenddessen keinen Effekt haben.
Watcher
auf Basis von watchdog hinzu.questionpy-sdk run --watch ...
.Beinhaltet Quellcode-Verzeichnisse beim Ausführen immer neu bauen #108Hängt ab von: questionpy-org/questionpy-server#105Hängt ab von: questionpy-org/questionpy-server#106