主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作为服务工作,并在系统启动时启动。