Al configurar el parámetro environment=
en un archivo de configuración, el signo %
devuelve un error Error: Format string 'KEY="%"' for 'environment' is badly formatted
.
p.ej
Bien: environment=SECRET_KEY="*wi4h$kqxp84f3w6uh8w@l$0(+@x$3cr&)z^lmg+pqw^6wkyi"
Roto: environment=SECRET_KEY="*wi4h$kqxp84f3w6uh8w@l$0(+@x$3cr&)z^lmg+pqw^6wky%i"
Roto: environment=FOO="%"
Roto: environment=FOO="\%"
Roto:
environment=SECRET_KEY="*wi4h$kqxp84f3w6uh8w@l$0(+@x$3cr&)z^lmg+pqw^6wky%i"
Debería poder incluir un %
usando %%
.
El supervisor usa la interpolación de cadenas de Python al analizar el archivo de configuración, por lo que puede probarlo así:
$ 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
Con %%
:
>>> "*wi4h$kqxp84f3w6uh8w@l$0(+@x$3cr&)z^lmg+pqw^6wky%%i" % {}
'*wi4h$kqxp84f3w6uh8w@l$0(+@x$3cr&)z^lmg+pqw^6wky%i'
Hola,
Enfrenté un problema similar con la configuración en el parámetro environment=
dentro del bloque [supervisord]
.
Tengo un parámetro con el signo %
. Probé la solución sugerida (usando 2 %
signos), pero no he podido resolver el problema.
La cadena de muestra para probar: x1it3km%2BTVmkRsQ
Obteniendo el siguiente error para esta cadena
Error: la cadena de formato 'SECRET = "x1it3km% 2BTVmkRsQ"' para 'supervisord.environment' está mal formateada: carácter de formato no admitido 'B'
Creo que esto tiene algo que ver con un número que sigue al signo %
, pero no estoy seguro.
¿Algunas ideas?
@chinmaybhoir es el caso ... considera% 2 como un carácter especial o algo así ... En mi caso, estaba en Django, así que eliminé cada% en la clave y funcionó bien
Sería asombroso si el supervisor pudiera escapar automáticamente %
s en cadenas (por ejemplo, %(ENV_SECRET_KEY)
actualmente se expande a x1it3km%2BTVmkRsQ
, que no es válido, pero me gustaría que se expandiera a x1it3km%%2BTVmkRsQ
. De esta manera, no tendría que cambiar mi clave secreta de Django para hacer feliz al supervisor.
Comentario más útil
Debería poder incluir un
%
usando%%
.El supervisor usa la interpolación de cadenas de Python al analizar el archivo de configuración, por lo que puede probarlo así:
Con
%%
: