Ao definir o parâmetro environment=
em um arquivo de configuração, o sinal %
retorna um erro Error: Format string 'KEY="%"' for 'environment' is badly formatted
.
por exemplo
Ok: environment=SECRET_KEY="*wi4h$kqxp84f3w6uh8w@l$0(+@x$3cr&)z^lmg+pqw^6wkyi"
Quebrado: environment=SECRET_KEY="*wi4h$kqxp84f3w6uh8w@l$0(+@x$3cr&)z^lmg+pqw^6wky%i"
Quebrado: environment=FOO="%"
Quebrado: environment=FOO="\%"
Quebrado:
environment=SECRET_KEY="*wi4h$kqxp84f3w6uh8w@l$0(+@x$3cr&)z^lmg+pqw^6wky%i"
Você deve ser capaz de incluir %
usando %%
.
O Supervisor usa interpolação de string Python ao analisar o arquivo de configuração, então você pode testá-lo assim:
$ 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
Com %%
:
>>> "*wi4h$kqxp84f3w6uh8w@l$0(+@x$3cr&)z^lmg+pqw^6wky%%i" % {}
'*wi4h$kqxp84f3w6uh8w@l$0(+@x$3cr&)z^lmg+pqw^6wky%i'
Oi,
Eu enfrentei um problema semelhante com a configuração no parâmetro environment=
dentro do bloco [supervisord]
.
Eu tenho um parâmetro com o sinal %
. Tentei a solução sugerida (usando 2 sinais %
), mas não consegui resolver o problema.
A string de amostra para tentar: x1it3km%2BTVmkRsQ
Obtendo o seguinte erro para esta string
Erro: a string de formato 'SECRET = "x1it3km% 2BTVmkRsQ"' para 'supervisord.environment' está formatada incorretamente: formato não suportado caractere 'B'
Acho que isso tem algo a ver com um número após o sinal %
, mas não tenho certeza.
Alguma ideia?
@chinmaybhoir é o caso ... considera% 2 como um caractere especial ou algo parecido ... No meu caso, eu estava no Django, então apenas removo todos os% da chave e funcionou bem
Seria incrível se o supervisor pudesse escapar automaticamente %
s em strings (por exemplo, %(ENV_SECRET_KEY)
atualmente se expande para x1it3km%2BTVmkRsQ
, que é inválido, mas eu gostaria que ele se expandisse para x1it3km%%2BTVmkRsQ
. Dessa forma, eu não teria que mudar minha chave secreta do Django para deixar o supervisor feliz.
Comentários muito úteis
Você deve ser capaz de incluir
%
usando%%
.O Supervisor usa interpolação de string Python ao analisar o arquivo de configuração, então você pode testá-lo assim:
Com
%%
: