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

dav*_*ode 10 python supervisord flower

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

flower --broker=$MYVAR

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

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

上面的命令工作,但后来我无法使用supervisorctl stop... 终止进程.我被"停止"回来但是进程实际上仍在运行!我怎样才能解决我的问题?(我不想把该参数放入内联)

rob*_*byt 12

根据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版之后添加的.


col*_*nig 5

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

command=php artisan queue:listen --env=%(ENV_APP_ENVIRONMENT)s

command=php artisan queue:listen --env=production如果APP_ENVIRONMENT环境变量是,上面的命令将扩展为production.

注意:在 Supervisor 配置中,您必须在系统环境变量前加上 前缀,如此ENV_文档中所指定。