代码编织梦想

“12-Factor” 是构建SaaS服务的一种方法论,这套理论适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序。

其中有一条很重要的原则是关于配置的,  12-Factor 要求代码和配置严格分离。

为什么要这么做?

如果你的代码放在Github等外部网络,哪一天要是代码不小心泄露了,你的各种密码,密钥,等配置全都暴露于公网中,这是一件非常可怕的事。

判断一个应用是否正确的将配置与代码分离开了,一个简单方法是你的代码是否可以立刻开源,而不用担心有任何敏感信息暴露。

将应用的配置存储于环境变量中是一种常规做法,例如在命令行中加入:

export PASSWORD=123456

windows

set PASSWORD=123456

业务代码中,通过环境变量来加载。

import os
env = os.environ.get("PASSWORD")
print(env)

这样做就不会将敏感信息暴露于业务代码中了,同时也可以最大程度让开发人员接触正式环境的敏感信息。

不过,问题来了,将敏感信息设置成环境变量,如果这样的信息非常多,挨个设置也太麻烦了。

你一定希望可以将这些敏感信息单独放在一个文件中,始终与代码分开管理

例如,我们在一个flask项目中,敏感信息我们专门放在一个叫.flaskenv 的文件中

.flaskenv 文件

FLASK_DEBUG=1
FLASK_ENV=local
AAA=1234

可是这些配置如何加载到环境变量中去?

python-dotenv

python-dotenv 就是专门干这事的,他能将配置文件的配置信息自动加入到环境变量。

安装 python-dotenv

pip install python-dotenv

加载配置文件

from dotenv import load_dotenv

# 加载文件
load_dotenv(".flaskenv")


import os

flask_env = os.environ.get("FLASK_ENV")
print(flask_env) # local

加载文件后,就可以通过os.environ从环境变量中读取内容。

flask配置最佳实践

在flask中,python-dotenv 可以无缝接入项目中,只要你的项目中存在 .env 或者 .flaskenv 文件,他就会提示你是否安装 python-dotenv

$ flask run
 * Tip: There are .env files present. Do "pip install python-dotenv" to use them.

安装完后python-dotenv后,就会自动加载里面的配置文件到环境变量中。

# config.py
class LocalConfig(BaseConfig):
    ENV = "development"
    FLASK_DEBUG = 1
    # 通过变量环境来加载数据库配置
    SQLALCHEMY_DATABASE_URI = os.getenv("SQLALCHEMY_DATABASE_URI")


# app.py
def create_app():
    app = Flask(__name__)
    app.config.from_object(LocalConfig)


# view.py
def hello():
    # 加载环境变量
    os.environ.get("AAA")

-------- End --------推荐👇同名微信视频号

图解Pandas图文00-内容框架介绍图文01-数据结构介绍图文02-创建数据对象图文03-操作Excel文件图文04-常见的数据访问图文05-常见的数据运算图文06-常见的数学计算图文07-常见的数据统计图文08-常见的数据筛选图文09-常见的缺失值处理图文10-数据合并操作

哪些 python 库让你相见恨晚?_武晓兵的博客-爱代码爱编程

https://www.zhihu.com/question/24590883 173 个回答 知乎用户 翻译组勤务员小艾,不值得一提的小

python中的异常、模块、文件_wang_yuhan-的博客-爱代码爱编程_触手writeas

异常 在程序开发中,如果对某些代码的执行不确定(程序的语法完全正确) 可以增加try来捕获异常 try: 尝试执行的代码 except: 出现错误的处理 例如: try: num = int

python初中级开发面经(持续更新2020-3-7)-爱代码爱编程

前言:欢迎各位留言补充遗漏的知识点,本文适用于初中级开发求职~ 文章目录 0. 开发者(程序猿)tip(杂)1.游戏后端架构设计1.1 设计方案1.2 web服务架构1.3 运维监控2 面试控场2.1 技术面2.1.1 专业能力2.1.2 综合素质2.2 leader面2.3 HR面2.4 自我介绍2.5 职业规划2.6 离职原因(丧命题)2.7 公

【毕业设计】基于Vue.js画作交流平台的设计与实现-爱代码爱编程

文章目录 摘要Abstract引言系统开发理论基础开发语言简介HTML5JavaScriptLessPHPRPythonGo框架简介Vue.jsThinkPHPFlaskPlumberCordova系统分析需求分析服务端系统架构设计服务端功能结构客户端功能结构功能模块服务端功能模块用户模块作品模块评论模块消息模块直播模块客户端功能模块用户模块用户管

python进入教材_Python系列教材第一集-爱代码爱编程

Python 新员工教材 楚广明2012 借用了一些闫小勇\郑纳智同志的文档,向同志们致敬! 目录 一、         Python概述. 5 1)             第一个Python程序. 6 1.             为什么要学习Python 7 2.             代码块与缩进的差异. 8 3.      

【Python】Python学习笔记-爱代码爱编程

Python基础 一、中文编码、注释与标准文档 1.中文编码 若只需要在单个文件中指定中文编码,只需在文件开始处添加 # _*_ coding: UTF-8 _*_ 即可。 如果要在整个工程里设置中文编码,则需要在编辑器中设置工程的编码为UTF-8。 2.单行注释 python使用#来接单行注释 3.多行注释 python使

python中如何优雅的实现代码与敏感信息分离?-爱代码爱编程

“12-Factor” 是构建SaaS服务的一种方法论,这套理论适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序。 其中有一条很重要的原则是关于配置的, 12-Factor 要求代码和配置严格分离。 为什么要这么做? 如果你的代码放在Github等外部网络,哪一天要是代码不小心泄露了,你的各种密码,密钥,等配置全都暴露于公网中,这是

面试官:请你讲讲Saas 应用的架构规范?-爱代码爱编程

点击上方蓝字,关注我们 引言 如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS)。12-Factor 为构建如下的 SaaS 应用提供了方法论: 使用标准化流程自动配置,从而使新的开发者花费最少的学习成本加入这个项目。和操作系统之间尽可能的划清界限,在各个系统中提供最大的可移植性。适合部署在现代的云

Python中优雅的实现代码与敏感信息分离-爱代码爱编程

文章目录 前言 python-dotenv 安装 python-dotenv 加载配置文件 flask配置最佳实践 前言 “12-Factor” 是构建SaaS服务

如何优雅保护 kubernetes 中的 secrets-爱代码爱编程

来源 | 进击云原生 现如今开发的大多数应用程序,或多或少都会用到一些敏感信息,用于执行某些业务逻辑。比如使用用户名密码去连接数据库,或者使用秘钥连接第三方服务。在代码中直接使用这些密码或者秘钥是最直接的方式,但同时也带来了很大的安全问题,如何保证密码、秘钥不被泄露。 如果你的应用程序已经被容器化,且使用Kubernetes(k8

如何优雅的保护 kubernetes 中的 secrets-爱代码爱编程

公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 现如今开发的大多数应用程序,或多或少都会用到一些敏感信息,用于执行某些业务逻辑。比如使用用户名密码去连接数据库,或者使用秘钥连接第三方服务。在代码中直接使用这些密码或者秘钥是最直接的方式,但同时也带来了很大的安全问题,如何保证密码、秘钥不被泄露。