Python supervisord环境变量设置应用程序

Python supervisord环境变量设置应用程序,python,tornado,supervisord,Python,Tornado,Supervisord,我正在运行一个来自supervisord的应用程序,我必须为它设置一个环境。大约有30个环境变量需要设置。我试着把所有的东西都放在一个大盒子上 环境= 这似乎不起作用。我还尝试了多个Environment=行,但这似乎也不起作用。我还尝试了使用和不使用“环绕环境”值 设置我的环境以使其在监督控制下保持完整的最佳方法是什么?我是否应该通过预加载环境的shell脚本调用我的实际程序(tornado,fwiw)?理想情况下,我希望将所有环境变量放入一个include文件中,并用supervisor加载

我正在运行一个来自supervisord的应用程序,我必须为它设置一个环境。大约有30个环境变量需要设置。我试着把所有的东西都放在一个大盒子上

环境=

这似乎不起作用。我还尝试了多个Environment=行,但这似乎也不起作用。我还尝试了使用和不使用“环绕环境”值

设置我的环境以使其在监督控制下保持完整的最佳方法是什么?我是否应该通过预加载环境的shell脚本调用我的实际程序(tornado,fwiw)?理想情况下,我希望将所有环境变量放入一个include文件中,并用supervisor加载它们,但我愿意用另一种方式

更新:

以下是我在conf文件中使用的内容:

environment=
    PYTHONPATH=/srv/obsf/current/:$PYTHONPATH,
    PYTHON_EGG_CACHE=/srv/obfs/current/.python-eggs,
    OBFS_API_ENVIRONMENT_STAGE=test,
这种情况持续了大约30行,有很多环境变量。当我执行程序时,它会立即崩溃,抱怨没有设置环境变量OBFS\u API\u environment\u STAGE。

说明需要将变量列为逗号分隔的键/值对:

环境

键/值对的列表,其形式为key=val,KEY2=val2,将被放置在supervisord进程的环境中(并作为其所有子进程的环境的结果)。此选项可以包括值%(此处)s,该值扩展到找到supervisord配置文件的目录。请注意,子进程将继承用于启动supervisord的shell的环境变量,但此处和程序的环境配置节中重写的环境变量除外

还使用逗号:

environment = KEY1=value1,KEY2=value2
在内部,这是使用python,因此它将正确处理引用。它还将去除空白,因此为了使内容更具可读性,您可以将内容分成多行:

environment =
    KEY1="Some longer value containing whitespace",
    KEY2=value2-on-a-new-line,
请注意,尾随逗号是可选的;这不会对输出产生影响


但是,在KEY1之后缺少逗号可能会导致奇怪的值(上面的示例中,减去
空白“
之后的逗号将得到
{'KEY1':'一些包含空白的较长值','=':','}
,如环境所述)由于没有严格检查等号要求。我必须纠正这一点。

事实证明,尾随逗号是一个问题。我引用了所有的env字符串并删除了尾随逗号。现在一切正常。

上次我使用它时,
environment=KEY=val,KEY2=val2
格式起作用了。你能粘贴你尝试的行吗?祝贺修复!Wh如果您能够,请确保将您的答案标记为“已接受”,以便其他人能够从您的成功中学习。干杯~引用我试图添加的环境变量对我有效。谢谢。事实上,尾随逗号将导致下一行算法被作为环境设置输入。>请注意,尾随逗号是可选的;它将输出没有差别。