视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
在python的WEB框架Flask中使用多个配置文件的解决方法
2020-11-27 14:30:15 责编:小采
文档


有些框架本身就支持多配置文件,例如Ruby On Rails,nodejs下的expressjs。python下的Flask虽然本身支持配置文件管理, 但单纯使用from_object和from_envvar却不是那么方便。有没有更好的办法?

答案是Flask-Environments这个包。它能通过FLASK_ENV环境变量自动选择开发环境配置或生产环境配置。使用之前要先安装:
代码如下:

$ sudo pip install Flask-Environments


然后修改config.py,将公用配置和默认配置写入Config类,针对环境的特殊配置写入各个环境的类:
代码如下:


# config.py
import os

class Config(object):
DEBUG = True
BASEDIR = os.path.abspath(os.path.dirname(__file__))

HOST = '0.0.0.0'
PORT = '8000'

class Development(Config): # inherit from Config
pass

class Production(Config):
DEBUG = False
HOST = '127.0.0.1
PORT = 14000


然后在生成app对象的地方加载配置:
代码如下:


from flask import Flask
from flask_environments import Environments

app = Flask(__name__)
env = Environments(app)
env.from_object('config')


这样默认通过app.run()方式启动时会加载开发配置。若要启动生产环境,则要先设置环境变量FLASK_ENV=PRODUCTION:
代码如下:


$ FLASK_ENV=PRODUCTION gunicorn -b 127.0.0.1:14000 myapp:app

下载本文
显示全文
专题