在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 多进程通信模块的简单实现
Feb 20 Python
python编程开发之类型转换convert实例分析
Nov 13 Python
python爬虫爬取快手视频多线程下载功能
Feb 28 Python
15行Python代码带你轻松理解令牌桶算法
Mar 21 Python
python3实现爬取淘宝美食代码分享
Sep 23 Python
python 将列表中的字符串连接成一个长路径的方法
Oct 23 Python
python 定义n个变量方法 (变量声明自动化)
Nov 10 Python
python实现名片管理系统
Nov 29 Python
python实现一行输入多个值和一行输出多个值的例子
Jul 16 Python
python os模块常用的29种方法使用详解
Jun 02 Python
Pyinstaller打包Scrapy项目的实现步骤
Sep 22 Python
python爬虫selenium模块详解
Mar 30 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中使用与Perl兼容的正则表达式
2006/11/26 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
转一个日期输入控件,支持FF
2007/04/27 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
JavaScript中prototype为对象添加属性的误区介绍
2013/10/15 Javascript
js简单的表格添加行和删除行操作示例
2014/03/31 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
超赞的动手创建JavaScript框架的详细教程
2015/06/30 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
2016/08/09 Javascript
BootstrapTable refresh 方法使用实例简单介绍
2017/02/20 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
AngularJS中的promise用法分析
2017/05/19 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
2017/12/21 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
Python 转义字符详细介绍
2017/03/21 Python
Python实现字符串逆序输出功能示例
2017/06/24 Python
python实现批量按比例缩放图片效果
2018/03/30 Python
快速解决vue.js 模板和jinja 模板冲突的问题
2019/07/26 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
基于python3抓取pinpoint应用信息入库
2020/01/08 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
人力资源经理自我评价
2014/01/04 职场文书
售前工程师职业生涯规划
2014/03/02 职场文书
关爱女孩行动实施方案
2014/03/13 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
学校对教师的评语
2014/04/28 职场文书
大学生个人总结范文
2015/02/15 职场文书