2009-08-10 11 views
3

Wenn ich den `Paste'-Webserver im Daemon-Modus starte, scheint es die Fähigkeit zu verlieren, neu zu laden, wenn der Zeitstempel einer Quelldatei aktualisiert wird.Paste (Python) Webserver - Autoreload Problem

Hier ist, wie ich den Daemon starten ...

cd ${project} && ../bin/paster serve --reload --daemon development.ini; cd ..; 

..., die der Verwendung von Einfügen einer der wichtigsten Punkte besiegt (für mich).

Hat jemand darüber gestolpert oder weiß, was ich falsch mache?

Um zu vervollständigen, ist die Datei, die ich ändere, eine Controller-Datei.

Die Version ist `PasteScript 1.7.3'

Antwort

5

Ich glaube, dass die beiden Optionen im Wesentlichen nicht kompatibel sind, da der reloader der Server mit einem SIGTERM stoppt und den Dämon-ized-Server, dass undurchlässig ist - und da daemon ist für den Einsatz in einer Produktionsumgebung gedacht, und reload für eine Entwicklungs-/Debugging-Umgebung, ich denke, dass ihre Inkompatibilität nicht als ein großer Verlust gesehen wird. Ich kann mir vorstellen, dass ein angepasster Reloader, der darauf zugeschnitten ist, den dämonisierten Server ordnungsgemäß zu stoppen und neu zu starten, sicherlich entwickelt werden könnte, aber ich kenne keinen existierenden.

+1

Danke - das, was ich hören musste. :) – Cyrus

+1

Der Dateimonitor für --reload prüft jede Quelldatei jede Sekunde und kann eine erhebliche Menge an CPU-Zeit verbrauchen. Sie sollten das niemals in der Produktion verwenden. Wenn Sie mod_wsgi verwenden, kann es neu geladen werden, indem Sie den Zeitstempel nur für das einzelne .wsgi-Skript überprüfen, das Ihre Anwendung lädt. Andere WSGI-Server verfügen auch über wichtige Funktionen zum erneuten Laden, wie das Laichen. – joeforker

+0

* Ich glaube, dass die beiden Optionen im Wesentlichen inkompatibel sind * Sie sind, [tatsächlich] (https://bitbucket.org/ianb/pastescript/src/510ff7d7627750eb0dbbc0d36fa63c72ffa6b303/paste/script/serve.py?at=default#cl-162). –

3

Ich hatte ein ähnliches Problem und umging das Problem. Ich habe derzeit Paster läuft auf einem Remote-Host, aber ich bin noch am Entwickeln, also brauchte ich ein Mittel zum Neustart Paster, aber manuell von Hand war zu zeitaufwendig, und Daemon hat nicht funktioniert. Also musste ich immer ein Shell-Fenster für den Server offen halten und einen Paster laufen lassen, ohne dass --daemon drin war. Sobald ich meine Arbeit für diesen Tag beendet hatte und ich die Muschel schloss, starb der Paster, was schlecht ist.

Ich umgangen, indem Sie Paster non Daemonized in einem "Bildschirm" ausgeführt. Geben Sie einfach "screen" in Ihre Shell Ihrer Wahl, Sie werden in der Regel abhängig von Ihrem Linux mit einem virtuellen Terminal präsentiert werden, das auch dann weiterläuft, wenn Sie Ihre Remote-Sitzung abmelden. Starten Sie wie gewohnt in Ihrem neuen "Fenster" (dem Bildschirm) mit --reload, aber ohne Daemon, und lösen Sie dann das Fenster, damit Sie zu Ihrer normalen Shell zurückkehren können (trennen = STRG-A, dann D drücken). Sie können diesen Bildschirm erneut aufrufen, indem Sie "screen -r" eingeben. Wenn Sie es abbrechen möchten, verbinden Sie es erneut (Bildschirm -r) und innerhalb des Bildschirms Typ STRG-A, dann drücken Sie K.

Hoffe, dass hilft.