1 Dependencia
Comenzando a desarrollar proyectos con FastAPI,
distinguir los entornos es el primer paso en la implementación, por lo tanto, es necesario distinguir los entornos dev/test/pre/prod,
y FastAPI solo proporciona parámetros para leer los archivos de configuración del entorno, que se pueden especificar al iniciar el servicio La ruta del archivo,
el parámetro es env_file, y el módulo para leer env_file es python-dotenv, que
debe instalarse manualmente:
pip install python-dotenv
Hay dos formas de usarlo:
(1) Configurar en el método de ejecución: env_file=file_path
(2) Usar en Docker: "--env-file", "file_path"
compartir de la siguiente manera para ayudar a los lectores que necesitan usar el desarrollo de FastAPI para lidiar fácilmente con la división del entorno.
2 aplicaciones
2.1 Agregar archivos de entorno
desplegar/dev.env
- Formato del contenido del archivo
: clave = valor
Los datos de lectura son todos de tipo str, por lo tanto, recuerde convertir los datos de tipo int,
si el valor es una cadena vacía, los datos de lectura son Ninguno, por lo tanto, solo necesita marcar Ninguno.
REDIS_HOST = "192.168.179.128"
REDIS_PORT = 6379
2.2 Configurar los parámetros del entorno
Usar parámetros de inicio: env_file, ruta del archivo de configuración
if __name__ == "__main__":
env_file_path = "deploy/prod.env"
uvicorn.run(host="0.0.0.0", port=8000, app="main:app", reload=True, env_file=env_file_path)
2.3 Cómo obtener el contenido de configuración
import os
REDIS_HOST = os.getenv("REDIS_HOST")
REDIS_PORT = int(os.getenv("REDIS_PORT"))
3 principios
3.1 ejecución del método de inicio
Hay muchos parámetros para ejecutar el método de inicio de uvicorn. El código fuente se muestra en la siguiente figura.
Busque el archivo env que necesitamos para configurar la ruta del archivo de entorno.
Ubicación: uvicorn.main.run
Cuando env_file no está vacío, el método para leer env_file es: load_dotenv
El código fuente del método load_dotenv es el siguiente: Del código fuente podemos ver que
la lógica de lectura específica está en el método: set_as_environment_variables.
Ubicación: dotenv.main.load_dotenv
El código fuente del método set_as_environment_variables se muestra en la siguiente figura.
A partir del código fuente, los datos obtenidos de env_file se escriben en la configuración del entorno a través de os.environ.
Por lo tanto, el valor correspondiente se puede obtener a través de os.getenv(key_name) .
Ejemplo: dotenv.main.DotEnv.set_as_environment_variables
4 Resumen
(1) FastAPI proporciona muchos parámetros de inicio, incluida la configuración del entorno, que se pasa a través del parámetro env_file. Si es un Dockerfile, use –env_file para pasar el parámetro; (2) El módulo para leer el
archivo env_file es python-dotenv ;
(3) Los datos adquiridos son todos de tipo cadena, si hay otro tipo de datos, preste atención para convertir el tipo de datos.