Flask 应用程序 config.py vs dotenv 以访问环境变量



嗨,我对编程和构建我的第一个烧瓶项目相对较新,我一直无法弄清楚我是否应该通过使用dotenv/load_dotenv或从 config.py 文件中使用它们来访问环境变量。

我知道配置路由更灵活,但我的问题专门与环境变量有关。

这里有最佳实践吗?[我正在构建一个简单的应用程序,该应用程序将在外部托管]

最佳做法规定,不应将任何机密值硬编码到任何随项目一起保留或签入源代码管理的文件。配置文件很可能保存在源代码管理中,因此它不应存储机密,而应从应用执行时设置的环境变量加载机密。例如,假设您正在配置 SMTP 中继:

MAIL_PORT是一个非秘密值,不太可能更改,因此它是在配置文件中设置的良好候选项。

MAIL_PASSWORD是不希望保存在项目存储库中的机密值,因此应从主机的环境变量加载它。

在此示例中,配置文件可能包含如下所示的条目:

MAIL_PORT = 465
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')

除了评估配置值是否为机密之外,还要考虑该值更改的频率以及进行更改的难度。硬编码到配置文件中的任何内容都需要更改文件并向源代码管理添加新提交,甚至可能触发完整的 CI/CD 管道进程。如果该值是从环境变量加载的,则只需停止应用程序,将新值导出为环境变量,然后重新启动应用程序即可更改此值。

Dotenv 文件只是为了方便将多个变量分组在一起并自动加载它们以供您的配置读取。并不总是使用.env文件,因为当负责启动或缩放应用程序的另一个系统调用或处理应用时,可以手动导出这些值。不要将.env.flaskenv文件签入源代码管理。

最新更新