在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扫描IP段查看指定端口是否开放的方法
Jun 09 Python
深入理解Python变量与常量
Jun 02 Python
解决python文件字符串转列表时遇到空行的问题
Jul 09 Python
使用Python爬取最好大学网大学排名
Feb 24 Python
把csv文件转化为数组及数组的切片方法
Jul 04 Python
解决python字典对值(值为列表)赋值出现重复的问题
Jan 20 Python
对python读取CT医学图像的实例详解
Jan 24 Python
python实现合并多个list及合并多个django QuerySet的方法示例
Jun 11 Python
在vscode中配置python环境过程解析
Sep 28 Python
pytorch中的inference使用实例
Feb 20 Python
Python闭包装饰器使用方法汇总
Jun 29 Python
python实现单机五子棋
Aug 28 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
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
php程序效率优化的一些策略小结
2010/07/17 PHP
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
php数组函数array_walk用法示例
2016/05/26 PHP
PHP基于ip2long实现IP转换整形
2020/12/11 PHP
jQuery 白痴级入门教程
2009/11/11 Javascript
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
JavaScript OOP面向对象介绍
2010/12/02 Javascript
一个可拖拽列宽表格实例演示
2012/11/26 Javascript
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
解决vue跨域axios异步通信问题
2019/04/17 Javascript
Python模拟登录12306的方法
2014/12/30 Python
python执行get提交的方法
2015/04/29 Python
Python中捕获键盘的方式详解
2019/03/28 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
python numpy中cumsum的用法详解
2019/10/17 Python
使用PyTorch实现MNIST手写体识别代码
2020/01/18 Python
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
预备党员党校学习自我评价分享
2013/11/12 职场文书
运动会广播稿80字
2014/01/23 职场文书
求职信范文怎么写
2014/01/29 职场文书
经典禁毒标语
2014/06/16 职场文书
党员自我对照检查材料
2014/08/19 职场文书
商标侵权律师函
2015/05/27 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
安全生产标语口号
2015/12/26 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书