¿Dónde debería colocar la clave secreta en Flask?

Mientras leía exploreflask.com , aprendí que es una buena práctica usar dos archivos de configuración diferentes, uno para desarrollo y otro para producción. No entiendo si colocar la clave secreta dentro de la configuración de desarrollo o producción.

La naturaleza privada de la carpeta de instancia lo convierte en un gran candidato para definir claves que no desea que se expongan en el control de versiones. Estos pueden incluir la clave secreta de su aplicación o las claves de API de terceros.

Supongo que la clave secreta no debería ser compartida. ¿Debería poner la clave secreta en la configuración de desarrollo o la configuración de producción, o debería tener una clave diferente para cada configuración?

Coloque una clave secreta en la configuración de desarrollo, que se compromete con el repository. Esto es conveniente para los desarrolladores, ya que no tienen que generar uno para comenzar a ejecutar la aplicación. En producción, use una configuración de producción (que nunca se compromete con el repository), con una clave secreta única. La configuración de producción debe anular la configuración de desarrollo.

app = Flask(__name__, instance_relative_config=True) # default value during development app.secret_key = 'dev' # overridden if this file exists in the instance folder app.config.from_pyfile('config.py', silent=True) 

Si no tiene una forma de agregar archivos privados en producción, como en Heroku, otra opción es usar variables de entorno. Si la variable está configurada, anula la predeterminada.

 app.secret_key = os.environ.get('SECRET_KEY', 'dev')