在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之大话题小函数(1)
Oct 10 Python
python中如何使用正则表达式的集合字符示例
Oct 09 Python
Numpy array数据的增、删、改、查实例
Jun 04 Python
python 统计列表中不同元素的数量方法
Jun 29 Python
Ubuntu18.04下python版本完美切换的解决方法
Jun 14 Python
通过PYTHON来实现图像分割详解
Jun 26 Python
详解Python可视化神器Yellowbrick使用
Nov 11 Python
django实现模板中的字符串文字和自动转义
Mar 31 Python
Pandas缺失值2种处理方式代码实例
Jun 13 Python
sqlalchemy实现时间列自动更新教程
Sep 02 Python
Python实现EM算法实例代码
Oct 04 Python
Python多线程实用方法以及共享变量资源竞争问题
Apr 12 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
德劲1107的电路分析与打磨
2021/03/02 无线电
用php实现批量查询清除一句话后门的代码
2008/01/20 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
PHP微信分享开发详解
2017/01/14 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
学习从实践开始之jQuery插件开发 菜单插件开发
2012/05/03 Javascript
jQuery 浮动导航菜单适合购物商品类型的网站
2014/09/09 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
Websocket协议详解及简单实例代码
2016/12/12 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
Javascript继承机制详解
2017/05/30 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
2019/07/03 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
python测试mysql写入性能完整实例
2018/01/18 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
Python+matplotlib绘制不同大小和颜色散点图实例
2018/01/19 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
在python 中实现运行多条shell命令
2019/01/07 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
Python线程threading模块用法详解
2020/02/26 Python
详解pandas获取Dataframe元素值的几种方法
2020/06/14 Python
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
小学生安全责任书
2014/07/25 职场文书
党性分析自查总结
2014/10/14 职场文书
单位政审意见范文
2015/06/04 职场文书