监控环境变量设置应用程序

2024-06-02 23:19:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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

环境=

但那似乎行不通。我也试过多条environment=线,但似乎也不管用。我也尝试过在env值附近使用和不使用'。在

怎样才能使我的环境在监督下保持完好?我应该从一个预先加载环境的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_API_environment_STAGE没有设置。在


Tags: 文件envapi应用程序environment环境环境变量情况
2条回答

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

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

environment

A list of key/value pairs in the form KEY=val,KEY2=val2 that will be placed in the supervisord process’ environment (and as a result in all of its child process’ environments). This option can include the value %(here)s, which expands to the directory in which the supervisord configuration file was found. Note that subprocesses will inherit the environment variables of the shell used to start supervisord except for the ones overridden here and within the program’s environment configuration stanza.

^{}还使用逗号:

environment = KEY1=value1,KEY2=value2

在内部,这是使用python^{} lexer^{},因此它可以正确地处理引用。它还将删除空白,因此为了使内容更具可读性,可以将内容分成多行:

^{pr2}$

注意,尾随逗号是可选的;它不会对输出产生影响。在

但是,在KEY1后面缺少逗号可能会导致奇怪的值(上面的例子,减去whitespace"后面的逗号将得到{'KEY1': 'Some longer value containing whitespace', '=': ','}作为环境dict),因为等号要求没有被严格检查。我得补救一下。在

相关问题 更多 >