Quiero construir una API REST muy simple usando python3/flask.
Digamos, por ejemplo, que quiero configurar mi SECRET_KEY requerida por el flask como env var.
¿Cuál es la forma recomendada de hacerlo?
Conozco el paquete python-dotenv que permite (¿o debería decir requiere ?) El archivo .flaskenv con env vars configurado como pares clave-valor en forma de
SECRET_KEY="my_secret_key" DB_NAME="mydatabase"etc.
Entonces (supongo) puedo crear un archivo settings.py como
import os SECRET_KEY = os.getenv('SECRET_KEY`) y luego realice una import settings en mis archivos de matraz y así sucesivamente.
Mi pregunta principal es cómo se puede adaptar esto en un entorno en contenedores donde no habrá un archivo .flaskenv pero las variables respectivas estarán disponibles como variables de entorno de tiempo de ejecución en el propio contenedor (por ejemplo, a través de su orquestador)
¿La forma anterior de settings.py podrá recuperar env vars en ausencia de .flaskenv ?
python-dotenv en realidad no tiene nada que ver con Flask. Es para que su archivo .env se traduzca en variables env reales. Entonces, si va a tener variables env reales sin él, su os.getenv aún debería funcionar.
Nota al margen: también puede usar os.environ :
os.environ.get("SECRET")Establezca su variable de entorno en el intérprete:
export SECRET_KEY=123 Llame a la variable con environ.get() :
from os import environ from flask import Flask app = Flask(__name__) app.config['SECRET_KEY'] = environ.get('SECRET_KEY')Verificar:
@app.route('/verify') def verify(): return '<p>' + app.config['SECRET_KEY'] + '</p>'