構成ファイルでenvironment=
パラメーターを設定すると、 %
記号はError: Format string 'KEY="%"' for 'environment' is badly formatted
エラーを返します。
例えば
わかりました: environment=SECRET_KEY="*wi4h$kqxp84f3w6uh8w@l$0(+@x$3cr&)z^lmg+pqw^6wkyi"
壊れた: environment=SECRET_KEY="*wi4h$kqxp84f3w6uh8w@l$0(+@x$3cr&)z^lmg+pqw^6wky%i"
壊れた: environment=FOO="%"
壊れた: environment=FOO="\%"
壊れた:
environment=SECRET_KEY="*wi4h$kqxp84f3w6uh8w@l$0(+@x$3cr&)z^lmg+pqw^6wky%i"
%%
を使用して、 %
を含めることができるはずです。
スーパーバイザーは、構成ファイルを解析するときにPython文字列補間を使用するため、次のようにテストできます。
$ python
>>> "*wi4h$kqxp84f3w6uh8w@l$0(+@x$3cr&)z^lmg+pqw^6wky%i" % {}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not dict
%%
:
>>> "*wi4h$kqxp84f3w6uh8w@l$0(+@x$3cr&)z^lmg+pqw^6wky%%i" % {}
'*wi4h$kqxp84f3w6uh8w@l$0(+@x$3cr&)z^lmg+pqw^6wky%i'
やあ、
[supervisord]
ブロック内のenvironment=
パラメーターの構成で同様の問題に直面しました。
%
記号の付いたパラメーターがあります。 提案された解決策(2つの%
記号を使用)を試しましたが、問題を解決できませんでした。
試してみるサンプル文字列: x1it3km%2BTVmkRsQ
この文字列で次のエラーが発生する
エラー:「supervisord.environment」のフォーマット文字列「SECRET = "x1it3km%2BTVmkRsQ"」のフォーマットが正しくありません:サポートされていないフォーマット文字「B」
これは%
記号に続く数字と関係があると思いますが、よくわかりません。
何か案は?
@chinmaybhoirそれは事実です...それは%2を特別な
スーパーバイザーが文字列内の%
自動的にエスケープできれば素晴らしいでしょう(たとえば、 %(ENV_SECRET_KEY)
現在x1it3km%2BTVmkRsQ
に展開されますが、これは無効ですが、展開したいのですがx1it3km%%2BTVmkRsQ
。この方法で、私は上司の幸せを作るために私のDjangoの秘密キーを変更する必要はありません。
最も参考になるコメント
%%
を使用して、%
を含めることができるはずです。スーパーバイザーは、構成ファイルを解析するときにPython文字列補間を使用するため、次のようにテストできます。
%%
: