我正在从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未设置。
在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请求来补救。
事实证明,后面的逗号是一个问题。 我引用的所有ENV字符串,删除后面的逗号。 现在所有的作品。