flask实践 gunicorn与.env

.env

生产环境下,.env通常用来保存私密的信息(如密钥等),
.gitignore中添加.env,使得其不会上传到公共仓库中,以保护私密信息。

1
2
3
# filename: .env
TEST_AK = blabla
TEST_SK = blabla

flask 默认会通过.env,(前提是需要安装python-dotenv)并将其加载到环境变量中,在程序中通过os.getenv('TEST_AK')获取环境变量,达到读取私密信息的目的。

gunicorn

由于flask默认的wsgi处理高并发还是鲁棒性都有所欠缺,我们通常会使用gunicorn,uWSGI等WSGI容器 来部署flask项目

我们可以通过gunicorn -c path_to_gunicorn_conf path_to_app:app来使得gunicorn代替flask默认的wsgi。

但这时,flask就不会自动导入.env到环境变量了,需要手动的去导入。
解决方案:

1
2
3
4
#filename: app.py
from dotenv import load_dotenv
#.env 与app.py 在同一路径下
load_dotenv('.env')