7

監視対象のアプリケーションを実行しているので、そのための環境をセットアップする必要があります。設定する必要のある環境変数は約30個あります。私はすべてを1つの大きなものに入れてみました

環境=

行とそれは動作しないようです。また、複数のenviroment =行を試しましたが、それも機能していないようです。また、env値の前後で'を使用する場合と使用しない場合の両方を試しました。

監視対象の制御下で無傷のままになるように環境を設定するための最良の方法は何ですか?環境がプリロードされたシェルスクリプトから実際のプログラム(tornado、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が設定されていないとすぐにクラッシュします。

4

2 に答える 2

12

relevant documentation section、変数をコンマ区切りのキー/値ペアとしてリストする必要があることを説明しています。

環境

監視対象プロセスの環境(およびその結果、すべての子プロセスの環境)に配置されるKEY = val、KEY2=val2の形式のキー/値ペアのリスト。このオプションには、値%(here)sを含めることができます。この値は、supervisord構成ファイルが見つかったディレクトリーに展開されます。サブプロセスは、ここおよびプログラムの環境構成スタンザ内でオーバーライドされたものを除いて、supervisordを開始するために使用されるシェルの環境変数を継承することに注意してください。

またexample for this section、コンマを使用します。

environment = KEY1=value1,KEY2=value2

内部的には、これはparsed into a dictpython shlexlexerを使用しているため、引用符を適切に処理します。また、空白が削除されるため、読みやすくするために、複数の行に分割することができます。

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

末尾のコンマはオプションであることに注意してください。出力に違いはありません。

ただし、KEY1の後にコンマがない場合は、等号の要件が厳密にチェックされていないため、奇妙な値になる可能性があります(上記の例から、後のコンマを差し引くと、環境の指示になります)whitespace"{'KEY1': 'Some longer value containing whitespace', '=': ','}それを修正するためにプルリクエストを送信しました。

于 2012-06-04T10:21:14.660 に答える
4

結局のところ、末尾のコンマが問題になります。すべてのenv文字列を引用し、末尾のコンマを削除しました。すべてが動作します。

于 2012-06-08T04:23:42.210 に答える