在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 相关文章推荐
pycharm 使用心得(二)设置字体大小
Jun 05 Python
python中while循环语句用法简单实例
May 07 Python
Python算法之图的遍历
Nov 16 Python
python调用百度语音识别实现大音频文件语音识别功能
Aug 30 Python
Python自定义函数计算给定日期是该年第几天的方法示例
May 30 Python
对Tensorflow中tensorboard日志的生成与显示详解
Feb 04 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
基于Python脚本实现邮件报警功能
May 20 Python
详解python 支持向量机(SVM)算法
Sep 18 Python
Python做图像处理及视频音频文件分离和合成功能
Nov 24 Python
python geopandas读取、创建shapefile文件的方法
Jun 29 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Apr 14 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缓存设计实现代码
2011/09/30 PHP
php 批量替换html标签的实例代码
2013/11/26 PHP
joomla数据库操作示例代码
2016/01/06 PHP
Yii2框架BootStrap样式的深入理解
2016/11/07 PHP
PHP生成图片缩略图类示例
2017/01/12 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
JS辨别访问浏览器判断是android还是ios系统
2014/08/19 Javascript
jQuery实现购物车数字加减效果
2015/03/14 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
2018/05/17 Javascript
react 国际化的实现代码示例
2018/09/14 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
2019/06/06 jQuery
es6函数之尾调用优化实例分析
2020/04/25 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
el-form 多层级表单的实现示例
2020/09/10 Javascript
Javascript实现单选框效果
2020/12/09 Javascript
[43:03]完美世界DOTA2联赛PWL S2 PXG vs Magma 第二场 11.21
2020/11/24 DOTA
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
Python实现基本线性数据结构
2016/08/22 Python
python opencv实现任意角度的透视变换实例代码
2018/01/12 Python
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
俄罗斯在线水暖商店:Perfecto.ru
2019/10/25 全球购物
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2013/03/19 面试题
自我鉴定范文200字
2013/10/02 职场文书
机关单位动员会主持词
2014/03/20 职场文书
毕业生就业协议书
2014/04/11 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server
pytest实现多进程与多线程运行超好用的插件
2022/07/15 Python