Python Flask 多环境配置
Python里取配置文件的时候,之前是使用的ini文件和python里configparser 模块:
可参考:https://www.cnblogs.com/feeland/p/4514771.html
后来觉得不够好用,在多个环境的情况下使用起来比较麻烦,就想有没有一种像spring boot里的profile机制呢~
因为项目里用到的Flask作为web框架所以就查了下找到了下面这篇博文:
https://wxnacy.com/2017/08/15/python-2017-08-15-flask-env-config/
根据实际需求和另一篇资料(后面有给出链接)稍微改了下(博主的所有配置放在一个文件里,用不同的类指示不同的环境。我这为了方便和后续配置项增加,把所有的配置文件拆开了),然后就有了下面的代码:
1.bash脚本,用于在跑python项目前设置环境,来设置接下来出现在config文件里的env_flask_config_name值:
#!/usr/bin/bash ENV=$ if [ ! ${ENV} ]
then
ENV=local
fi export FLASK_CONFIG=${ENV}
2.config.py,用于设定具体的环境,重点在环境的映射字典:
# -*- coding: utf-8 -*
"""多环境配置类 author: Jill usage:
from application.config import app
database_uri = app.config['SQLALCHEMY_DATABASE_URI']
"""
from flask import Flask
from werkzeug.contrib.fixers import ProxyFix
import os """
配置文件映射
"""
CONFIG_NAME_MAPPER = {
'local': 'local_config.py',
'dev': 'dev_config.py',
'prod': 'prod_config.py',
'test': 'test_config.py'
} def create_app(flask_config_name=None):
"""
创建配置
"""
app = Flask(__name__)
app.wsgi_app = ProxyFix(app.wsgi_app)
env_flask_config_name = os.getenv('FLASK_CONFIG')
# 指定环境
config_mapper_name = flask_config_name or env_flask_config_name or 'local'
config_name = CONFIG_NAME_MAPPER[config_mapper_name]
app.config.from_pyfile(config_name) return app application = create_app() if __name__ == '__main__':
print("local数据库连接:", application.config['SQLALCHEMY_DATABASE_URI'])
3.接下来就是具体的配置文件了(以dev_config.py为例子)(参考:http://www.pythondoc.com/exploreflask/configuration.html):
DEBUG = True # Turns on debugging features in Flask
BCRYPT_LEVEL = 12 # Configuration for the Flask-Bcrypt extension
MAIL_FROM_EMAIL = "robert@example.com" # For use in application emails
Python Flask 多环境配置的更多相关文章
- windows下跑python flask,环境配置
首先声明一下,我安装的是python 2.7. 第一步:下载easy_setup.py 下载地址:https://pypi.python.org/pypi/setuptools 这个下载地址真心难找, ...
- python+selenium的环境配置
以前写过关于python和selenium加myeclipse的环境配置,但是myeclipse启动时过于费时,虽然myeclipse有很好的提示功能,但是作为初学者,我还是直接用python的idl ...
- Python selenium chrome 环境配置
Python selenium chrome 环境配置 一.参考文章: 1. 记录一下python easy_install和pip安装地址和方法 http://heipark.iteye.com/b ...
- 【selenium+python】之Python Flask 开发环境搭建(Windows)
一.先安装python以及pip 二.其次, Python的虚拟环境安装: 在github上下载https://github.com/pypa/virtualenv/tree/master zip文 ...
- Python flask中的配置
当你开始学习Flask时,配置看上去是小菜一碟.你仅仅需要在config.py定义几个变量,然后万事大吉. 然而当你不得不管理一个生产上的应用的配置时,这一切将变得棘手万分. 你不得不设法保护API密 ...
- Python 爬虫2——环境配置
关于环境配置的操作,其实非常简单,假如不使用第三方的框架的话,只需要安装Python即可完成后续的操作. 一.Python的安装和配置: windows系统的安装配置过程如下,假如是Mac系统,可参考 ...
- Python沙盒环境配置
一.简介 本文介绍配置python沙盒环境的方法步骤. 二.安装步骤 1.安装pyenv http://www.cnblogs.com/274914765qq/p/4948530.html 2.安装v ...
- 代码编辑器[0] -> Vim/gVim[0] -> 基于 Python 的 gVim 环境配置(Windows)
环境配置 / Environment Setup 基于Python开发的 gVim 环境配置(Windows) 使用方式参考 Vim 的使用. 1 基于vundle进行配置 Vim有多个扩展管理器, ...
- 免安装方式的Python之VSCode环境配置
概述 本文旨在介绍免安装方式,在VSCode中搭建Python(3.73)的配置环境.至于Python是什么.它能做些什么,诸如此类的介绍均不在此文中介绍,相信能看此文的人,多多少少都会有些了解. V ...
随机推荐
- S3TC IAP15F2K61S2点亮一个发光二极管keil和stc-isp软件操作
1.安装破解软件 2.打开STC-ISP,找到头文件,选择保存文件 3.找到keil的安装目录,keil/C51/INC 并保存 4.在桌面新建文件夹 5.打开keil 6.找到在桌面上新建的文件夹 ...
- Laravel学习之旅(二)
控制器 一.怎么编写控制器? 1.控制器文件存放路径:app\Http\Controllers: 2.命名规范如:TestController.php 3.完整的控制器例子如下: <?php n ...
- Crazy Computer
ZS the Coder is coding on a crazy computer. If you don't type in a word for a cconsecutive seconds, ...
- ssh 免 密码登录另一台机器 和 secureCRT的乱码问题
PS: 就是你把密钥生成好以后,放入B机器中,再登录的时候就已经有了所以就不用验证了 ========================================================= ...
- matplotlib 双y轴绘制及合并图例
关键函数:twinx() refer to: https://www.cnblogs.com/Atanisi/p/8530693.html
- log4net保存到数据库系列五、新增数据库字段
园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...
- GridControl 之 BandedGridView
https://documentation.devexpress.com/#WindowsForms/clsDevExpressXtraGridViewsBandedGridBandedGridVie ...
- php利用curl获取网页title内容
/**$html = curl_get_file_contents($url); $title = get_title_contents($html); var_dump($title);*/ fun ...
- 如何彻底卸载Jenkins(Windows版本)
起因: 最近在做持续集成测试过程中遇到一个问题,之前部署的Jenkins管理员密码忘了之后无法登陆,而且删除掉tomcat下webapps文件夹中的Jenkins目录后,再次安装Jenkins后相关的 ...
- ActiveMQ集群方案
集群方案主要为了解决系统架构中的两个关键问题:高可用和高性能.ActiveMQ服务的高可用性是指,在ActiveMQ服务性能不变.数据不丢失的前提下,确保当系统灾难出现时ActiveMQ能够持续提供消 ...