在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的Django框架部署的一些建议
Apr 09 Python
python中__slots__用法实例
Jun 04 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 Python
Python实现KNN邻近算法
Jan 28 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
Jan 30 Python
pyqt5 实现在别的窗口弹出进度条
Jun 18 Python
详解mac python+selenium+Chrome 简单案例
Nov 08 Python
Django Form and ModelForm的区别与使用
Dec 06 Python
Python学习之路安装pycharm的教程详解
Jun 17 Python
Python 执行矩阵与线性代数运算
Aug 01 Python
Python之字典添加元素的几种方法
Sep 30 Python
Python答题卡识别并给出分数的实现代码
Jun 22 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笔记之常用文件操作
2010/10/12 PHP
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
Thinkphp5+uploadify实现的文件上传功能示例
2018/05/26 PHP
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
node.js中的fs.rmdir方法使用说明
2014/12/16 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
js实现C#的StringBuilder效果完整实例
2015/12/22 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
基于JS实现限时抢购倒计时间表代码
2017/05/09 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
js利用拖放实现添加删除
2020/08/27 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
如何使用python爬取csdn博客访问量
2016/02/14 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
python中 * 的用法详解
2019/07/10 Python
Python Pandas 如何shuffle(打乱)数据
2019/07/30 Python
python tkinter组件使用详解
2019/09/16 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
解决使用Pandas 读取超过65536行的Excel文件问题
2020/11/10 Python
纯css3实现图片翻牌特效
2015/03/10 HTML / CSS
HTML5 虚拟键盘出现挡住输入框的解决办法
2017/02/14 HTML / CSS
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
施华洛世奇日本官网:SWAROVSKI日本
2018/05/04 全球购物
Myprotein台湾官方网站:全球领先的运动营养品牌
2018/12/10 全球购物
数控专业个人求职信范文
2014/02/05 职场文书
入党自我鉴定
2014/03/25 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
2016公司年会主持词
2015/07/01 职场文书
致男子1500米运动员的广播稿
2019/11/08 职场文书
Java Dubbo框架知识点梳理
2021/06/26 Java/Android