web-dev-qa-db-fra.com

Variables Superviseur et Environnement

Je ne sais vraiment pas comment faire en sorte que le superviseur travaille avec des variables d'environnement.

Vous trouverez ci-dessous un extrait de configuration.

[program:htNotificationService]
priority=2
#autostart=true
#autorestart=true
directory=/home/ubuntu/workspace/htFrontEnd/heythat/htsite
command = /usr/bin/python htNotificationService.py -service
stdout_logfile=/var/log/heythat/htNotificationService.log
redirect_stderr=true
environment=PATH=/home/ubuntu/workspace/htFrontEnd/heythat
stopsignal=QUIT

J'ai essayé ce qui suit:

environment=PATH=/home/ubuntu/workspace/htFrontEnd/heythat
environment=PYTHONPATH=$PYTHONPATH:/home/ubuntu/workspace/htFrontEnd/heythat
environment=PATH=/home/ubuntu/workspace/htFrontEnd/heythat,PYTHONPATH=$PYTHONPATH:/home/ubuntu/workspace/htFrontEnd/heythat

Quand je commence superviseur je reçois

htNotificationService: ERROR (abnormal termination)

Je peux commencer à partir du shell en définissant le chemin python, mais pas à partir du superviseur. Dans les journaux, une erreur m'indique qu'une importation est introuvable. Cela serait résolu. si superviseur fonctionnerait, j'ai même le chemin dans/etc/environment?

Pourquoi le superviseur ne travaille-t-il pas?

62
Tampa

Le référencement des variables existantes est fait avec% (ENV_VARNAME) s

(voir https://github.com/Supervisor/supervisor/blob/master/supervisor/skel/sample.conf )

La définition de plusieurs variables d’environnement est effectuée en les séparant par des virgules

(voir http://supervisord.org/subprocess.html#subprocess-environment )

Essayer:

environment=PYTHONPATH=/opt/mypypath:%(ENV_PYTHONPATH)s,PATH=/opt/mypath:%(ENV_PATH)s
93
edibleEnergy

Dans votre fichier .conf sous le bloc supervisord, vous pouvez ajouter toutes les paires clé d’environnement = valeur en tant que telles.

[supervisord]
environment=CELERY_BROKER_URL="amqp://guest:[email protected]:5672//",FLASK_CONFIG="TESTING"

[program:celeryd]
command=celery worker -A celery --loglevel=info -P gevent -c 1000

Si vous ne voulez pas coder en dur les variables mais que vous voulez les extraire de l'environnement os, passez à l'étape 1 de votre bash

Export env var

>> Sudo export CELERY_BROKER_URL="amqp://guest:[email protected]:5672//"

Recharger Bash

>> . ~/.bashrc

Vérifie si les vars env sont configurés correctement

>> env

Maintenant modifiez le fichier conf pour lire - Note : ajoutez vos variables env avec ENV_

[supervisord]
environment=CELERY_BROKER_URL="%(ENV_CELERY_BROKER_URL)s",FLASK_CONFIG="%(ENV_FLASK_CONFIG)s"

[program:celeryd]
command=celery worker -A celery --loglevel=info -P gevent -c 1000
23
jetpackdata.com

cela fonctionne pour moi. notez les onglets avant chaque ligne:

environment=
    CLOUD_INSTANCE_NAME=media-server-xx-xx-xx-xx,
    CLOUD_APPLICATION=media-server,
    CLOUD_APP_COMPONENT=none,
    CLOUD_ZONE=a,
    CLOUD_REGION=b,
    CLOUD_PRIVATE_IP=none,
    CLOUD_PUBLIC_IP=xx.xx.xx.xx,
    CLOUD_PUBLIC_IPV6=xx.xx.xx.xx.xx.xx,
    CLOUD_PROVIDER=c
16
FuzzyAmi

Si vous installez supervisor à partir d'un programme d'installation de paquet, vérifiez la version de superviseur que vous utilisez. À partir d'août 2016, vous obtiendrez .0b2. Si tel est le cas, vous aurez besoin d'une version plus récente de superviseur. Vous pouvez l'obtenir en installant supervisor manuellement ou en utilisant le pip de Python. Assurez-vous que toutes les dépendances sont remplies, ainsi que la configuration initiale, de sorte que supervisord fonctionne comme un service et démarre au démarrage du système.

5
user260826