在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解析发往本机的数据包示例 (解析数据包)
Jan 16 Python
python中zip()方法应用实例分析
Apr 16 Python
Python可变参数用法实例分析
Apr 02 Python
python学习入门细节知识点
Mar 29 Python
python实现大文本文件分割
Jul 22 Python
django中间键重定向实例方法
Nov 10 Python
pymysql模块的操作实例
Dec 17 Python
如何使用pandas读取txt文件中指定的列(有无标题)
Mar 05 Python
python实现与redis交互操作详解
Apr 21 Python
Python requests及aiohttp速度对比代码实例
Jul 16 Python
Python数据模型与Python对象模型的相关总结
Jan 26 Python
tensorboard 可视化之localhost:6006不显示的解决方案
May 22 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
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
php select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
MongoDB在PHP中的常用操作小结
2014/02/20 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
原生javaScript实现图片延时加载的方法
2014/12/22 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
浅谈JavaScript的push(),pop(),concat()方法
2016/06/03 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
JS获取数组中出现次数最多及第二多元素的方法
2017/10/27 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
一个Vue页面的内存泄露分析详解
2018/06/25 Javascript
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
Python通过select实现异步IO的方法
2015/06/04 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
对python打乱数据集中X,y标签对的方法详解
2018/12/14 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
伦敦著名的运动鞋综合商店:Footpatrol
2019/03/25 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
行政总监岗位职责
2013/12/05 职场文书
社会实践心得体会
2014/01/03 职场文书
幼儿园义卖活动方案
2014/01/17 职场文书
大一工商管理职业生涯规划:有梦最美,行动相随
2014/09/18 职场文书
公司财务部岗位职责
2015/04/14 职场文书
民事调解书范文
2015/05/20 职场文书
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python
mongodb的安装和开机自启动详细讲解
2021/08/02 MongoDB
SQLServer权限之只开启创建表权限
2022/04/12 SQL Server
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技