首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主控引擎和环境变量

主控引擎和环境变量
EN

Stack Overflow用户
提问于 2012-10-16 00:57:47
回答 5查看 94.9K关注 0票数 81

我真的不知道如何让supervisor使用环境变量。

下面是一个配置代码片段。

代码语言:javascript
复制
[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

我尝试过以下几种方法:

代码语言:javascript
复制
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

当我开始做主管时,我会得到

代码语言:javascript
复制
htNotificationService: ERROR (abnormal termination)

我可以通过设置python路径从shell开始,但不能从supervisor开始。在日志中,我得到一个错误,说找不到导入。好吧,如果主管愿意的话这个问题就解决了。我甚至在/etc/environment中有路径?

为什么主管不会工作?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-10-27 05:08:40

引用现有环境变量是使用%(ENV_VARNAME)s完成的

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

设置多个环境变量的方法是用逗号分隔它们

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

尝试:

代码语言:javascript
复制
environment=PYTHONPATH=/opt/mypypath:%(ENV_PYTHONPATH)s,PATH=/opt/mypath:%(ENV_PATH)s
票数 113
EN

Stack Overflow用户

发布于 2016-03-24 19:40:48

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

代码语言:javascript
复制
[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

如果您不想对变量进行硬编码,但又想将其从os环境中提取出来,那么在bash上执行步骤1。

导出环境变量

代码语言:javascript
复制
>> sudo export CELERY_BROKER_URL="amqp://guest:guest@127.0.0.1:5672//"

重新加载Bash

代码语言:javascript
复制
>> . ~/.bashrc

检查环境变量是否设置正确

代码语言:javascript
复制
>> env

现在修改conf文件以读取- Note:在您的环境变量前面加上ENV_

代码语言:javascript
复制
[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
票数 36
EN

Stack Overflow用户

发布于 2016-12-25 21:04:19

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

代码语言:javascript
复制
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
票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12900402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档