在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连接mysql数据库示例(做增删改操作)
Dec 31 Python
Django小白教程之Django用户注册与登录
Apr 22 Python
python将ansible配置转为json格式实例代码
May 15 Python
python之matplotlib学习绘制动态更新图实例代码
Jan 23 Python
python监控键盘输入实例代码
Feb 09 Python
用Django实现一个可运行的区块链应用
Mar 08 Python
详解Python中正则匹配TAB及空格的小技巧
Jul 26 Python
Python适配器模式代码实现解析
Aug 02 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 Python
tensorflow 自定义损失函数示例代码
Feb 05 Python
Python 为什么推荐蛇形命名法原因浅析
Jun 18 Python
详解Python中Pyyaml模块的使用
Oct 08 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排序算法(冒泡排序,快速排序)
2012/10/09 PHP
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
从javascript语言本身谈项目实战
2006/12/27 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
IE浏览器中图片onload事件无效的解决方法
2014/04/29 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
2015/12/11 Javascript
jquery表单提交带错误信息提示效果
2017/03/09 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
JavaScript错误处理操作实例详解
2019/01/04 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
微信小程序实现多张图片上传功能
2020/11/18 Javascript
[57:38]2018DOTA2亚洲邀请赛3月30日 小组赛A组 OpTic VS OG
2018/03/31 DOTA
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
浅谈使用Python变量时要避免的3个错误
2017/10/30 Python
pandas Dataframe行列读取的实例
2018/06/08 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
Python实现微信机器人的方法
2019/09/06 Python
python使用正则表达式匹配txt特定字符串(有换行)
2020/12/09 Python
用python批量移动文件
2021/01/14 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
html5跨域通讯之postMessage的用法总结
2013/11/07 HTML / CSS
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
大一新生学期自我评价
2014/04/09 职场文书
服务口号大全
2014/06/11 职场文书
社区娱乐活动方案
2014/08/21 职场文书
宾馆安全管理制度
2015/08/06 职场文书
2016抗战胜利71周年红领巾广播稿
2015/12/18 职场文书
Python字符串格式化方式
2022/04/07 Python
详解SQL报错盲注
2022/07/23 SQL Server