您好,我对编程和构建我的第一个 Flask 项目还比较陌生,我一直无法弄清楚我是否应该更喜欢使用 dotenv
来访问环境变量。/load_dotenv
或从 config.py 文件中使用它们。
我知道配置路由更灵活,但我的问题专门与环境变量有关。
这里有最佳实践吗? [我正在构建一个将在外部托管的简单应用]
最佳答案
最佳实践规定,不应将任何 secret 值硬编码到项目中持续存在或 checkin 源代码管理的任何文件中。您的配置文件很可能保存在源代码管理中,因此它不应存储 secret ,而应从应用程序执行时设置的环境变量中加载它们。例如,假设您正在配置 SMTP 中继:
MAIL_PORT
是一个非 secret 且不太可能更改的值,因此很适合在您的配置文件中设置。
MAIL_PASSWORD
是您不希望保存在项目存储库中的 secret 值,因此应从主机的环境变量中加载它。
在此示例中,您的配置文件可能包含如下所示的条目:
MAIL_PORT = 465
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
除了评估配置值是否是 secret 之外,还要考虑该值更改的频率以及进行更改的难度。任何硬编码到配置文件中的内容都需要更改文件并向源代码管理添加新的提交,甚至可能触发完整的 CI/CD 管道过程。如果该值是从环境变量加载的,则可以通过简单地停止应用程序、将新值导出为环境变量并重新启动应用程序来更改该值。
Dotenv 文件只是将多个变量组合在一起并自动加载它们以供您的配置读取的便利工具。 .env
文件并不总是被使用,因为当应用程序被另一个负责启动或缩放应用程序的系统调用或处理时,这些值可以手动导出。不要将 .env
或 .flaskenv
文件 checkin 源代码管理。
关于python - Flask app config.py vs dotenv 访问环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62071829/