如何在supervisord命令中使用环境变量

时间:2014-03-07 11:22:42

标签: python supervisord flower

如何在supervisord命令中使用环境变量? 我试过了:

flower --broker=$MYVAR

但它没有工作(变量没有扩展),所以我尝试使用内联python脚本:

command=python -c "import os;os.system('flower --broker={0}'.format(os.environ['MYVAR']))"

上面的命令有效,但是我无法使用supervisorctl stop终止该过程...我得到了#34;停止"回来但是这个过程实际上还在运行! 我怎样才能解决我的问题? (我不想把这个参数放在内联中)

2 个答案:

答案 0 :(得分:11)

根据Supervisor文档,您可以通过在ENV_前面添加前缀来访问命令中的环境变量:%(ENV_YOUR_VAR)s

http://supervisord.org/configuration.html#environment-variables

  

字符串表达式是根据包含键group_name,host_node_name,process_num,program_name,here(supervisord配置文件的目录)的字典以及所有以ENV _为前缀的supervisord环境变量来计算的。

但是,根据此提交:https://github.com/Supervisor/supervisor/commit/2d6ca34582a8a07a5dd96ae45ef62cd58a459f4f此功能是在3.2版之后添加的。

答案 1 :(得分:1)

我能够在Supervisor命令中使用系统环境变量,如下所示:

_next

如果command=php artisan queue:listen --env=%(ENV_APP_ENVIRONMENT)s环境变量为command=php artisan queue:listen --env=production,则上述命令将扩展为APP_ENVIRONMENT

注意:在Supervisor配置中,您必须在系统环境变量前加production作为前缀,如文档here中所述。