Frage

Ich bin mit supervisord zu laichen und leite eine FastCGI-Anwendung, dass ich für ein Linux-Ziel in C schreibe. Ich habe einen Signal-Handler, die elegant meine Anwendung beendet, wenn SIGINT empfangen wird. Ich habe festgestellt, dass die Signalbehandlungsroutine durch Ausführen der Anwendung in einem Terminal-Fenstern und Ausgeben von Ctrl-C zu verlassen, wie gewünscht funktioniert.

Bei Verwendung eines „shutdown“ -Befehl an supervisord (via supervisorctl) Ausgeben, scheint es, dass supervisord nicht in der Lage ist, die Anwendung zu Ausgang zu erzwingen, ohne den Aufruf SIGKILL:

2010-08-20 10:02:49,661 INFO waiting for cse to die
2010-08-20 10:02:52,665 INFO waiting for cse to die
2010-08-20 10:02:55,669 INFO waiting for cse to die
2010-08-20 10:02:58,672 INFO waiting for cse to die
2010-08-20 10:02:59,673 WARN killing 'cse' (2031) with SIGKILL
2010-08-20 10:02:59,674 INFO stopped: cse (terminated by SIGKILL)

Ich habe folgendes in meiner supervisord.conf Datei

stopsignal=INT

Es ist meine Vermutung, dass supervisord issues „Stoppsignal“ beim Aufruf des Befehls shutdown, so dass ich die INFO Aussagen als Hinweis nehmen, dass mein App nicht auf die SIGINT von supervisord ausgegeben reagiert.

Wie gehe ich über das Signal Debuggen zwischen supervisord und meiner app vorbei?

War es hilfreich?

Lösung 2

Nach etwas mehr graben, scheint es, dass das Problem ist nicht, dass supervisord Signale Prozesse Kind passieren versagt. Dies scheint normal zu funktionieren.

Vielmehr scheint es, dass supervisord Kind Prozess stderr Ausgabe nicht mehr anmelden, sobald es eine Anforderung an invoke Stoppsignal empfängt. Als Ergebnis jeder Stderr basierte Protokollierung des Kindes Prozess Herunterfahren wird nicht von supervisord verarbeitet werden. In meinem Fall machte es scheint, dass das Kind Prozess nicht SIGINT empfängt, da es nichts zu stderr Anmeldung wurde, nachdem das Signal aufgerufen wurde.

Andere Tipps

Sie können supervisord auf der Kommandozeile im Debug-Modus laufen und weitere Informationen erhalten.

supervisord -n -e debug

Das war ein Fehler, da in Beauftragten 3.0a10 behoben wurde (2011-03-30) Veröffentlichung gemäß dieser begehen: https://github.com/Supervisor/supervisor/commit/e19cbc185dfad045c8775750d36ab8ceed4c4dfb

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top