在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捕捉和模拟鼠标事件的方法
Jun 03 Python
详解Python编程中基本的数学计算使用
Feb 04 Python
Python编程中归并排序算法的实现步骤详解
May 04 Python
举例讲解Python中字典的合并值相加与异或对比
Jun 04 Python
Python之Web框架Django项目搭建全过程
May 02 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
Jun 15 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
May 10 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
Nov 11 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
Dec 11 Python
jupyter notebook实现显示行号
Apr 13 Python
Pygame的程序开始示例代码
May 07 Python
python 如何上传包到pypi
Dec 24 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
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
php DES加密算法实例分析
2019/09/18 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
2016/03/11 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
概述一个页面从输入URL到页面加载完的过程
2016/12/16 Javascript
javascript判断回文数详解及实现代码
2017/02/03 Javascript
基于js的变量提升和函数提升(详解)
2017/09/17 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
详解Webpack loader 之 file-loader
2018/11/07 Javascript
jQuery Ajax async=>false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
Python Nose框架编写测试用例方法
2017/10/26 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
UML设计模式笔试题
2014/06/07 面试题
体育教育个人自荐信范文
2013/12/01 职场文书
安全生产计划书
2014/05/04 职场文书
伦敦奥运会口号
2014/06/13 职场文书
暑期学习心得体会
2014/09/02 职场文书
教师纪念9.18事件演讲稿范文
2014/09/14 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
pytorch实现线性回归以及多元回归
2021/04/11 Python
JavaScript 防篡改对象的用法示例
2021/04/24 Javascript
总结Python使用过程中的bug
2021/06/18 Python