-->

supervisord环境变量设置应用程序(supervisord environment vari

2019-09-17 18:16发布

我正在从supervisord的应用程序,我必须建立一个环境吧。 有迹象表明,需要设置约30环境变量。 我试图把所有的一个大

环境=

行,这似乎并没有工作。 我也试过多种环境=行,而且似乎没有任何工作。 我也有和没有“周围的包膜值尝试。

什么是建立我的环境使得其保持supervisord控制下完好的最佳方法? 我应该从预装那里的环境中的shell脚本中调用我的实际程序(龙卷风,FWIW)? 理想情况下,我希望把所有的环境变量组合成一个包含文件,并与主管加载它们,但我愿意这样做的另一种方式。

更新:

下面是我使用的conf文件的内容:

environment=
    PYTHONPATH=/srv/obsf/current/:$PYTHONPATH,
    PYTHON_EGG_CACHE=/srv/obfs/current/.python-eggs,
    OBFS_API_ENVIRONMENT_STAGE=test,

这正好为约30行,用了很多的环境变量。 当我执行程序时,它立刻崩溃抱怨环境变量OBFS_API_ENVRIONMENT_STAGE未设置。

Answer 1:

relevant documentation section解释了您需要列出变量为逗号分隔键/值对:

环境

键/值对的形式KEY =缬氨酸,KEY2 = val2的列表,将被放置在supervisord过程环境(并且如在所有它的子过程的结果环境)。 这个选项可以包括值%(在这里)s,它扩展到其中supervisord配置文件所在的目录。 请注意,子进程将继承用于启动supervisord除了这里和程序的环境配置节中覆盖的那些外壳的环境变量。

example for this section也使用逗号:

environment = KEY1=value1,KEY2=value2

内部这被parsed into a dict使用Python shlex词法分析器 ,所以它会处理引用正确。 它也将剥离空白,所以使事情更易读,可以划分东西多行:

environment =
    KEY1="Some longer value containing whitespace",
    KEY2=value2-on-a-new-line,

注意,后面的逗号是可选的; 它不会使输出的差异。

缺少一个逗号后KEY1但可能会导致怪异值(上面的例子中,减去后面的逗号whitespace"会给你{'KEY1': 'Some longer value containing whitespace', '=': ','}随着环境的字典)作为等号的要求并没有被严格检查。我已经提交pull请求来补救。



Answer 2:

事实证明,后面的逗号是一个问题。 我引用的所有ENV字符串,删除后面的逗号。 现在所有的作品。



文章来源: supervisord environment variables setting up application