FastAPI如何区分多环境:开发/测试/预发布/生产环境

您所在的位置:网站首页 fastapi文件队列 FastAPI如何区分多环境:开发/测试/预发布/生产环境

FastAPI如何区分多环境:开发/测试/预发布/生产环境

2023-09-30 06:25| 来源: 网络整理| 查看: 265

1 缘起

开始用FastAPI开发项目, 区分环境是部署的第一步,因此,需要区分dev/test/pre/prod等环境, 而FastAPI刚好提供了读取环境配置文件的参数,可以在启动服务时指定环境配置文件的路径, 参数为env_file,读取env_file的模块为python-dotenv, 需要手动安装:

pip install python-dotenv

有两种使用方式: (1)run方法中配置:env_file=file_path (2)Docker中使用:"--env-file", "file_path" 分享如下,帮助需要使用FastAPI开发的读者轻松应对环境划分。

2 应用 2.1 添加环境文件

deploy/dev.env 在这里插入图片描述

文件内容 格式:key = value 读取到的数据都是str类型,因此,int类型的数据记得转换, 如果value为空字符串,读取到的数据为None,因此,只需校验None。 REDIS_HOST = "192.168.179.128" REDIS_PORT = 6379 2.2 配置环境参数

使用启动参数:env_file,配置文件路径

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 如何获取配置的内容 import os REDIS_HOST = os.getenv("REDIS_HOST") REDIS_PORT = int(os.getenv("REDIS_PORT")) 3 原理 3.1 启动方法run

uvicorn启动方法run的参数有很多,源码如下图所示, 找到我们需要的env_file,用于配置环境文件路径。 位置:uvicorn.main.run 在这里插入图片描述 当env_file不为空时,读取env_file的方法为:load_dotenv 在这里插入图片描述

load_dotenv的方法源码如下,通过源码可知, 具体的读取逻辑实在方法:set_as_environment_variables中。 位置:dotenv.main.load_dotenv

在这里插入图片描述

set_as_environment_variables方法源码如下图所示, 由源码可知,从env_file获取的数据通过os.environ写入环境配置, 因此,可以通过os.getenv(key_name)获取对应的值。

位置:dotenv.main.DotEnv.set_as_environment_variables 在这里插入图片描述

4 小结

(1)FastAPI提供的启动参数众多,包括环境配置,通过参数env_file传入,如果是Dockerfile,则使用–env_file传参; (2)读取env_file文件的模块为python-dotenv; (3)获取的数据均为string类型,如有其他类型的数据,注意转换数据类型。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3