主pipe和环境variables

我真的不知道如何让主pipe处理环境variables。

下面是一个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 

我已经尝试了以下内容:

 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 

当我开始做主pipe的时候

 htNotificationService: ERROR (abnormal termination) 

我可以通过设置pythonpath从shell启动,但不能从supervisor启动。 在日志中,我收到一个错误,表示无法find导入。 那么,如果主pipe会工作的话就可以解决了。 我什至在/ etc /环境中的path?

为什么上司不工作?

引用现有的envvariables是通过%(ENV_VARNAME)完成的

(请参阅https://github.com/Supervisor/supervisor/blob/master/supervisor/skel/sample.conf

设置多个环境variables是通过用逗号分隔来完成的

(请参阅http://supervisord.org/subprocess.html#subprocess-environment

尝试:

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

在supervisord块下的.conf文件中,可以添加所有的环境key = value对

 [supervisord] environment=CELERY_BROKER_URL="amqp://guest:guest@127.0.0.1:5672//",FLASK_CONFIG="TESTING" [program:celeryd] command=celery worker -A celery --loglevel=info -P gevent -c 1000 

如果你不想硬编码的variables,但要从OS环境,步骤1在你的bash拉入

导出env var

 >> sudo export CELERY_BROKER_URL="amqp://guest:guest@127.0.0.1:5672//" 

重新加载Bash

 >> . ~/.bashrc 

检查环境variables设置是否正确

 >> env 

现在修改conf文件来读取 – 注意 :用ENV_前置你的envvariables

 [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 

这对我有用。 注意每行之前的选项卡:

 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 

如果您从软件包安装程序安装Supervisor,请检查您使用的是哪个Supervisor版本。 截至2016年8月,您将获得3.0b2 。 如果是这种情况,你将需要一个更新版本的主pipe。 您可以通过手动安装主pipe或使用Python的pip来获得。 确保所有的依赖关系都得到满足,同时还有暴发户的设置,以便supervisord作为服务工作,并在系统启动时启动。