嗨,我对编程和构建我的第一个Flask项目还比较陌生,我无法弄清楚我是否更喜欢通过使用dotenv
/ load_dotenv
或从config.py文件。
我知道配置路由更灵活,但是我的问题专门与环境变量有关。
这里有最佳实践吗? [我正在构建一个将在外部托管的简单应用]
答案 0 :(得分:2)
最佳实践表明,不应将任何秘密值硬编码到与项目一起存在的任何文件中,也不应将其检查到源代码管理中。您的配置文件很有可能会保存在源代码管理中,因此它不应存储机密,而应从在应用程序执行时设置的环境变量中加载机密。例如,假设您正在配置SMTP中继:
MAIL_PORT
是一个不是秘密的值,不可能更改,因此是在配置文件中设置的最佳选择。
MAIL_PASSWORD
是一个不想保存在项目存储库中的秘密值,因此应从主机的环境变量中加载它。
在此示例中,您的配置文件可能包含类似于以下内容的条目:
MAIL_PORT = 465
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
除了评估配置值是否是秘密外,还应考虑该值将多久更改一次以及进行更改的难度。硬编码到配置文件中的任何内容都将需要更改文件并向源代码管理添加新的提交,甚至可能触发完整的CI / CD管道过程。如果改为从环境变量加载该值,则可以通过简单地停止应用程序,将新值导出为环境变量并重新启动应用程序来更改此值。
Dotenv文件只是将多个变量组合在一起并自动加载它们以供您的配置读取的便利。 .env
文件并不总是使用,因为当负责启动或扩展应用程序的另一个系统调用或处理该应用程序时,可以手动导出这些值。不要将.env
或.flaskenv
文件签入源代码管理中。