在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中最常用的操作列表的几种方法归纳
Apr 24 Python
在Python中处理XML的教程
Apr 29 Python
python实现批量下载新浪博客的方法
Jun 15 Python
在Django中创建第一个静态视图
Jul 15 Python
Python中的CSV文件使用"with"语句的方式详解
Oct 16 Python
python requests更换代理适用于IP频率限制的方法
Aug 21 Python
Python Des加密解密如何实现软件注册码机器码
Jan 08 Python
python对XML文件的操作实现代码
Mar 27 Python
看看如何用Python绘制小米新版天价logo
Apr 20 Python
详解Python类和对象内容
Jun 22 Python
Python中的pprint模块
Nov 27 Python
Python OpenCV超详细讲解基本功能
Apr 02 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
adodb与adodb_lite之比较
2006/12/31 PHP
ThinkPHP3.1之D方法实例详解
2014/06/20 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
浅谈php和js中json的编码和解码
2016/10/24 PHP
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
javascript的对话框详解与参数
2007/03/08 Javascript
JavaScript入门教程 Cookies
2009/01/31 Javascript
struts2 jquery 打造无限层次的树
2009/10/23 Javascript
namespace.js Javascript的命名空间库
2011/10/11 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
node.js中的Socket.IO使用实例
2014/11/04 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
javascript实现动态改变层大小的方法
2015/05/14 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
2016/11/30 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
js对象简介与基本用法示例
2020/03/13 Javascript
vue 项目@change多个参数传值多个事件的操作
2021/01/29 Vue.js
[01:51]2018年度CS GO最具人气外援-完美盛典
2018/12/16 DOTA
python中 logging的使用详解
2017/10/25 Python
TensorFlow实现MLP多层感知机模型
2018/03/09 Python
python使用re模块爬取豆瓣Top250电影
2020/10/20 Python
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
加拿大领先家居家具网上购物:Aosom.ca
2020/05/27 全球购物
优秀技术工人先进材料
2014/02/17 职场文书
社团活动总结格式
2014/08/29 职场文书
开业庆典活动策划方案
2014/09/21 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
情况说明书怎么写
2015/10/08 职场文书
周一早安温馨问候祝福语!
2019/07/15 职场文书