Server bei Änderungen automatisch neustarten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
deamon
User
Beiträge: 63
Registriert: Mittwoch 8. Oktober 2008, 11:14

Hallo,

ich bastele gerade an einem kleinen REST-Framework und möchte den Entwicklungsserver automatisch neustarten, wenn sich Code der Anwendung ändert. Dazu habe ich mir Folgendes überlegt:

1. Man startet einen Prozess als Master.
2. Der Master startet einen Subprozess mit dem eigentlichen Server (WSGI-Server).
3. Der Subprozess überwacht die Dateien der geladenen Module in einem eigenen Thread auf Änderungen.
4. Wenn sich eine Datei ändert, beendet der sich der Suprozess und gibt einen Rückgabewerte != 0 zurück.
5. Der Master startet den Subprozess neu, wodurch alle Python-Module neu geladen werden.

Geht das einfach oder eleganter? Oder gibt es das schon fertig?
lunar

@daemon: Wirf doch einen Blick in den Quelltext der Webrahmenwerke und Webbibliotheken, die eine solche Funktionalität bereits implementieren (z.B. bottle, werkzeug oder django). Möglicherweise kannst Du die entsprechenden Teile auch einfach in Dein Projekt übernehmen, die Lizenzen dieser Rahmenwerke und Bibliotheken sind ja recht liberal.
deamon
User
Beiträge: 63
Registriert: Mittwoch 8. Oktober 2008, 11:14

Hallo lunar,

danke für den Hinweis. Ich bin zwar noch nicht weiter gekommen, aber zumindest ein paar Beispiele habe ich schon mal gefunden, die ich hier in Form von Links für die Nachwelt und mich dokumentiere:

* http://bottle.paws.de/docs/dev/tutorial ... -reloading
* http://code.djangoproject.com/browser/d ... oreload.py
* http://bitbucket.org/ianb/pastescript/s ... .py#cl-423
Antworten