2012-06-04 15 views
5

私はsupervisordからアプリケーションを実行しており、その環境を設定する必要があります。設定する必要がある環境変数は約30種類あります。私は=一つの大きなスーパーバイザ環境変数を設定するアプリケーション

環境上のすべての

ラインを入れてみました、それが動作するようには思えません。私はまた、複数の環境を試しました=行、そしてどちらも動作していないようです。私はenv値の周りにもしなくても試みました。

自分の環境をスーパーバイザーの制御下にそのまま残すように設定するにはどうすればよいですか?そこにあらかじめ環境がプリインストールされているシェルスクリプトから私の実際のプログラム(竜巻、fwiw)を呼び出すべきですか?理想的には、すべての環境変数をインクルードファイルに入れてスーパーバイザにロードしたいと思っていますが、私は別の方法でそれをやり遂げています。

UPDATE:

ここでは、私は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が設定されていないとすぐにクラッシュします。

+0

私はこれを使いましたが、 'environment = KEY = val、KEY2 = val2'という形式が使われました。試したラインを貼り付けることはできますか? – Bittrance

答えて

4

このように、末尾のカンマが問題になります。私はすべてのenv文字列を引用し、末尾のカンマを削除しました。すべての作品は今。

+0

修正のおめでとう!あなたができるときは、他の人があなたの成功から学ぶことができるように、あなたの答えに「受け入れられた」と記入してください。乾杯〜 –

+0

追加しようとしていたENV変数を引用すると、私のために働いた。ありがとう。 – shawn

+0

実際、末尾のカンマは、次の行が環境設定として解釈されるようになります。 – WhyNotHugo

8

relevant documentation sectionあなたはカンマで区切られたキー/値のペアとして変数をリストする必要があることを説明します。

環境

フォームKEY = valの中のキー/値ペアのリスト、KEY2 =スーパーバイザプロセスの環境に配置されるval2(すべての子プロセスの環境)このオプションには、スーパーディスク構成ファイルが見つかったディレクトリに展開する値%(ここ)を含めることができます。サブプロセスは、スーパーバイザーを起動するために使用されるシェルの環境変数を継承します。ただし、ここでオーバーライドされたものとプログラムの環境構成スタンザ内ではオーバーライドされます。

example for this sectionもコンマを使用しています。

environment = KEY1=value1,KEY2=value2 

は、内部的にはこれはPythonのshlex lexerを使用してparsed into a dictあるので、適切に引用符を扱うます。また、そう物事をより読みやすくするために、あなたは複数行にわたるものを分割することができ、空白を取り除くでしょう:末尾のコンマがオプションであることを

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

注意を。出力に違いはありません。

ただし、KEY1の後にカンマがないと、奇妙な値になる可能性があります(上記の例では、whitespace"の後にカンマを付けると、環境のdictとして{'KEY1': 'Some longer value containing whitespace', '=': ','}となります)。私はそれを是正するためにsubmitted a pull requestを持っています。

+0

>末尾のカンマはオプションです。出力に違いはありません。 <そうです!次の行が別の環境変数として解釈されます。 – WhyNotHugo

+0

@Hugo:次の行がインデントされていますか?次の行は、値*を扱うコードに渡されません。私は明日これをもう一度見ていきますが、(Python標準ライブラリの)設定パーサが動作する方法は、あなたが説明することは不可能です。 –

+0

@Hugo:コードをもう一度見て、末尾のカンマがconfigの次の行に引っ張られてはいけません。その動作を示すサンプル構成(GistまたはPastieを使用してください)を教えてください。 –

関連する問題