在python的WEB框架Flask中使用多个配置文件的解决方法


Posted in Python onApril 18, 2014

有些框架本身就支持多配置文件,例如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
Python 相关文章推荐
python使用PIL模块实现给图片打水印的方法
May 22 Python
在MAC上搭建python数据分析开发环境
Jan 26 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
Apr 28 Python
Python实现的基于优先等级分配糖果问题算法示例
Apr 25 Python
python实现文本界面网络聊天室
Dec 12 Python
python做反被爬保护的方法
Jul 01 Python
使用django的ORM框架按月统计近一年内的数据方法
Jul 18 Python
python 统计文件中的字符串数目示例
Dec 24 Python
基于Python执行dos命令并获取输出的结果
Dec 30 Python
python代码xml转txt实例
Mar 10 Python
pytorch 实现变分自动编码器的操作
May 24 Python
python自动计算图像数据集的RGB均值
Jun 18 Python
Python操作json数据的一个简单例子
Apr 17 #Python
python使用ctypes模块调用windowsapi获取系统版本示例
Apr 17 #Python
python调用windows api锁定计算机示例
Apr 17 #Python
python实现监控windows服务并自动启动服务示例
Apr 17 #Python
解决python写的windows服务不能启动的问题
Apr 15 #Python
Python和php通信乱码问题解决方法
Apr 15 #Python
Python获取脚本所在目录的正确方法
Apr 15 #Python
You might like
php利用事务处理转账问题
2015/04/22 PHP
thinkphp的dump函数无输出实例代码
2016/11/15 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
2010/03/20 Javascript
XENON基于JSON变种
2010/07/27 Javascript
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
2011/11/30 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
javascript操作数组详解
2014/12/17 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
从零学习node.js之简易的网络爬虫(四)
2017/02/22 Javascript
原生js简单实现放大镜特效
2017/05/16 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
vue组件间通信子与父详解(二)
2017/11/07 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
[06:16]DOTA2守卫传承者——职业选手谈心路历程
2015/02/26 DOTA
python抓取网页中的图片示例
2014/02/28 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
python写入文件自动换行问题的方法
2019/07/05 Python
pandas删除行删除列增加行增加列的实现
2019/07/06 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
如何爬取通过ajax加载数据的网站
2019/08/15 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
青蓝工程实施方案
2014/03/27 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
学习党章的体会
2014/11/07 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书
Pycharm 如何设置HTML文件自动补全代码或标签
2021/05/21 Python