Supervisord: comment ajouter à $ PATH

23

Je n'arrive pas à comprendre comment ajouter au chemin par défaut dans une configuration de programme Supervisord.

Je peux réinitialiser le chemin:

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

Mais quand j'essaye:

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

Je vois que le superviseur n'évalue pas $PATH.

Google n'a pas été d'une grande aide à ce sujet pour une raison quelconque, je ne peux pas croire que je suis la première personne à en avoir besoin.

Supervisord doit avoir un soutien pour cela, une idée de ce que c'est?

Prody
la source
1
@ascobol non, j'ai codé en dur le chemin dont j'ai besoin, pour l'instant
Prody
2
supervisordn'exécutez pas le shell pour prétraiter les variables dans le fichier de configuration, vous ne pouvez donc pas utiliser d'expressions shell pour développer les variables. Bien qu'il existe un correctif qui permette de le faire %($PATH), il a été discuté dans les listes de diffusion en 2011, mais AFAIK, il n'est toujours pas inclus dans l'arborescence des sources de la ligne principale. Pour contourner ce problème, vous pouvez créer un script qui configurera l'environnement et exécutera une commande fournie en arguments. Ensuite, vous exécutez simplement le script à partir de supervisordsimilairescommand /usr/local/bin/setup_env_master.sh program_name arguments
Dmitry Vasilyanov
1
Il y a un inconvénient important à la solution de wrapper shell - lorsque le superviseur essaiera d'arrêter le processus en utilisant INT ou KILL, le signal sera reçu par le script bash et non par le programme wrappé réel. Cela peut conduire (et conduit dans mon cas) à des processus pendants.
stoiczek
@stoiczek problème facile à résoudre. Utilisez exec à la fin du script bash, ne vous contentez pas d'exécuter la commande régulièrement. Alors exec server --args. Vous le voyez invariablement dans les emplois parvenus.
CameronNemo

Réponses:

17

Cette fonctionnalité a été ajoutée au superviseur récemment

environnement = CHEMIN = "/ home / site / environnements / master / bin:% (ENV_PATH) s"

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

Voir également /programming/12900402/supervisor-and-environment-variables

Thomas Grainger
la source
Mais il n'a pas encore été publié (tagué): github.com/Supervisor/supervisor/issues/599
tersmitten
Il a été tagué hier: pypi.python.org/pypi/supervisor
tersmitten
1

J'ai examiné la documentation et suis d'accord avec Dmitry.

La réponse actuelle est: le superviseur ne fait pas ce répertoire, mais la création d'un script wrapper aidera.

L'uni
la source