Frage Supervisord: Wie man an $ PATH anfügt


Ich kann anscheinend nicht herausfinden, wie man den Standardpfad in einer Supervisord-Programmkonfiguration anfügt.

Ich kann den Pfad zurücksetzen:

environment=PATH="/home/site/environments/master/bin"

Aber wenn ich es versuche:

environment=PATH="/home/site/environments/master/bin:$PATH"

Ich sehe, dass supervisord nicht bewertet $PATH.

Google war aus irgendeinem Grund keine große Hilfe, ich kann nicht glauben, dass ich die erste Person bin, die das braucht.

Supervisord muss Unterstützung dafür haben, irgendeine Idee, was es ist?


22
2017-11-15 09:48


Ursprung


Hast du eine Lösung für dieses Problem gefunden? Ich habe nur das gleiche Problem - ascobol
@ascobol nein, ich habe den Weg, den ich brauche, vorerst fest programmiert - Prody
supervisord Führen Sie die Shell nicht zum Vorverarbeiten von Variablen in der Konfigurationsdatei aus, daher können Sie keine Shell-Ausdrücke zum Erweitern von Variablen verwenden. Obwohl es einen Patch gibt, der das erlaubt %($PATH) und es wurde 2011 in Mailinglisten diskutiert, aber AFAIK ist immer noch nicht in der Hauptquellenbaum enthalten. Als Workaround können Sie ein Skript erstellen, das die Umgebung einrichtet und einen in Argumenten angegebenen Befehl ausführt. Dann führst du das Skript einfach aus supervisord mögen command /usr/local/bin/setup_env_master.sh program_name arguments - Dmitry Vasilyanov
Es gibt einen signifikanten Nachteil der Shell-Wrapper-Lösung - wenn der Supervisor versucht, den Prozess mit INT oder KILL zu stoppen, wird das Signal vom Bash-Skript und nicht vom eigentlichen Wrapped-Programm empfangen. Dies kann (und führt in meinem Fall) zu dangling Prozessen führen. - stoiczek
@stoiczek einfaches Problem zu lösen. Verwenden Sie am Ende des bash-Skripts exec, führen Sie den Befehl nicht nur regelmäßig aus. So exec server --args. Sie sehen es in Upstart-Jobs ausnahmslos. - CameronNemo


Antworten:


Diese Funktion wurde kürzlich dem Supervisor hinzugefügt

environment = PATH = "/ home / site / umgebungen / master / bin:% (ENV_PATH) s"

https://github.com/Supervisor/supervisor/blob/master/supervisor/skel/sample.conf#L8

Siehe auch https://stackoverflow.com/questions/12900402/supervisor-and-environment-variables


11
2017-07-01 16:29



Aber es wurde noch nicht veröffentlicht (markiert): github.com/Supervisor/supervisor/issues/599 - tersmitten
Gestern wurde es getaggt: pypi.python.org/pypi/supervisor - tersmitten


Ich überprüfte die Dokumentation und stimme Dmitry zu.

Die aktuelle Antwort ist: Supervisor führt dieses Verzeichnis nicht aus, aber das Erstellen eines Wrapper-Skripts wird helfen.


1
2017-12-07 20:16