在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 时间处理datetime实例
Sep 06 Python
python3生成随机数实例
Oct 20 Python
python创建和删除目录的方法
Apr 29 Python
python查找指定具有相同内容文件的方法
Jun 28 Python
python购物车程序简单代码
Apr 18 Python
python读文件保存到字典,修改字典并写入新文件的实例
Apr 23 Python
利用Python如何生成便签图片详解
Jul 09 Python
Python WSGI的深入理解
Aug 01 Python
Python 从一个文件中调用另一个文件的类方法
Jan 10 Python
解决nohup执行python程序log文件写入不及时的问题
Jan 14 Python
PyTorch 解决Dataset和Dataloader遇到的问题
Jan 08 Python
python新手学习可变和不可变对象
Jun 11 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
缅甸的咖啡简史
2021/03/04 咖啡文化
一个好用的分页函数
2006/11/16 PHP
解析thinkphp中的M()与D()方法的区别
2013/06/22 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
js onclick事件传参讲解
2013/11/06 Javascript
javascript学习笔记(八)正则表达式
2014/10/08 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
微信小程序开发animation心跳动画效果
2017/08/16 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
原生JS实现多个小球碰撞反弹效果示例
2018/01/31 Javascript
Vue循环组件加validate多表单验证的实例
2018/09/18 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
vue fetch中的.then()的正确使用方法
2020/04/17 Javascript
浅谈javascript事件环微任务和宏任务队列原理
2020/09/12 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
[02:07]2018DOTA2亚洲邀请赛主赛事第三日五佳镜头 fy极限反杀
2018/04/06 DOTA
python备份文件以及mysql数据库的脚本代码
2013/06/10 Python
python抓取文件夹的所有文件
2018/02/27 Python
AUC计算方法与Python实现代码
2020/02/28 Python
python如何进行矩阵运算
2020/06/05 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
python中翻译功能translate模块实现方法
2020/12/17 Python
python math模块的基本使用教程
2021/01/16 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
2021/02/18 Python
HTML5之SVG 2D入门7—SVG元素的重用与引用
2013/01/30 HTML / CSS
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
英语国培研修感言
2014/02/13 职场文书
含预算的公司户外活动方案
2014/08/16 职场文书
银行委托书范本
2014/09/28 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
法制主题班会教案
2015/08/13 职场文书
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技
Python中的tkinter库简单案例详解
2022/01/22 Python