在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中模拟enum枚举类型的5种方法分享
Nov 22 Python
多版本Python共存的配置方法
May 22 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
Aug 08 Python
python正则表达式及使用正则表达式的例子
Jan 22 Python
TensorFlow实现Batch Normalization
Mar 08 Python
PyQt5每天必学之像素图控件QPixmap
Apr 19 Python
python制作mysql数据迁移脚本
Jan 01 Python
Python逐行读取文件中内容的简单方法
Feb 26 Python
Python表达式的优先级详解
Feb 18 Python
python+selenium 脚本实现每天自动登记的思路详解
Mar 11 Python
使用python实现微信小程序自动签到功能
Apr 27 Python
用OpenCV进行年龄和性别检测的实现示例
Jan 29 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采用file_get_contents代替使用curl实例
2014/11/07 PHP
Zend Framework教程之Application和Bootstrap用法详解
2016/03/10 PHP
让textarea控件的滚动条怎是位与最下方
2007/04/20 Javascript
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
页面加载完后自动执行一个方法的js代码
2014/09/06 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
AngularJS2中一种button切换效果的实现方法(二)
2017/03/27 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
JS实现将二维数组转为json格式字符串操作示例
2018/07/12 Javascript
antd Upload 文件上传的示例代码
2018/12/14 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
python类继承用法实例分析
2014/10/10 Python
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
Python socket编程实例详解
2015/05/27 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
Numpy数据类型转换astype,dtype的方法
2018/06/09 Python
Python中一些深不见底的“坑”
2019/06/12 Python
django自带调试服务器的使用详解
2019/08/29 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
python中yield的用法详解
2021/01/13 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
美国女性服饰销售网站:Nasty Gal(坏女孩)
2016/07/26 全球购物
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
如何写好自荐信
2014/04/07 职场文书
大学新生军训自我鉴定
2014/09/18 职场文书
2014坚持党风廉政建设思想汇报
2014/09/18 职场文书
2017元旦、春节期间廉洁自律承诺书
2016/03/25 职场文书
Python Pandas解析读写 CSV 文件
2022/04/11 Python
Python开发简易五子棋小游戏
2022/05/02 Python