文章内容
2018/12/24 13:26:02,作 者: 黄兵
获取Flask Config配置文件内容
最近使用Redis增加一个缓存层,但是远程Redis服务器无法提供外网访问,在本地无法调试Redis程序,之后官方给的是一个端口转发的方案。
具体没有采用,我在外网可以访问的服务器上重新安装了Redis服务,但是正式配置和开发配置每次都要更改,具体怎么很少更改或者不更改部署Redis服务呢?
config.py
import os
basedir = os.path.abspath(os.path.dirname(__file__))
class Config:
SECRET_KEY = os.environ.get(
'SECRET_KEY') or 'mLZXDOv12YwdM9ZG'
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
# 163 mail config
MAIL_SERVER = os.environ.get('MAIL_SERVER', 'smtp.163.com')
MAIL_PORT = int(os.environ.get('MAIL_PORT', '465'))
MAIL_USE_SSL = os.environ.get('MAIL_USE_SSL', 'true')
MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
FLASKY_MAIL_SUBJECT_PREFIX = '[Flasky]'
FLASKY_MAIL_SENDER = 'Flasky Admin <@163.com>'
FLASKY_ADMIN = os.environ.get('FLASKY_ADMIN')
# Bootstrap flask config
BOOTSTRAP_USE_MINIFIED = True
BOOTSTRAP_SERVE_LOCAL = True
BOOTSTRAP_CDN_FORCE_SSL = True
FLASKY_POSTS_PER_PAGE = 10
# file upload path and file upload extensions
UPLOAD_FOLDER = os.environ.get('UPLOAD_FOLDER', '/uploads')
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'}
SQLALCHEMY_TRACK_MODIFICATIONS = True
@staticmethod
def init_app(app):
pass
class DevelopmentConfig(Config):
DEBUG = True
SQLALCHEMY_DATABASE_URI = os.environ.get(
'DEV_DATABASE_URL') or 'mysql://pment'
# Redis Config
REDIS_HOST = os.environ.get('REDIS_HOST', 'xxx.com')
REDIS_PORT = os.environ.get('REDIS_PORT', '6379')
DECODE_RESPONSES = os.environ.get('decode_responses', True)
REDIS_PASSWORD = os.environ.get('REDIS_PASSWORD', 'xxxx')
class TestingConfig(Config):
TESTING = True
SQLALCHEMY_DATABASE_URI = os.environ.get(
'TEST_DATABASE_URL') or 'mysql://databasg'
class ProductionConfig(Config):
SQLALCHEMY_DATABASE_URI = os.environ.get(
'TEST_DATABASE_URL') or 'mysql://Sction'
# Redis Config
REDIS_HOST = os.environ.get('REDIS_HOST', '10.66.202.150')
REDIS_PORT = os.environ.get('REDIS_PORT', '6379')
DECODE_RESPONSES = os.environ.get('decode_responses', True)
REDIS_PASSWORD = os.environ.get('REDIS_PASSWORD', 'uQ')
config = {
'Development': DevelopmentConfig,
'testing': TestingConfig,
'production': ProductionConfig,
'default': DevelopmentConfig
}之后Redis获取配置文件参数,具体写法如下:
import app
# redis config
redis_client = redis.StrictRedis(host=app.config.get('default').REDIS_HOST,
port=app.config.get('default').REDIS_PORT,
password=app.config.get('default').REDIS_PASSWORD,
decode_responses=app.config.get('default').DECODE_RESPONSES)如果是开发环境,只需要更改为:
'default': DevelopmentConfig
如果是正式上线,更改为:
'default': ProductionConfig
这样就实现了很少的改动,自由切换Redis的配置。
这样就实现了开发环境和生产环境的配置不同。
黄兵个人博客原创。
转载请注明出处:黄兵个人博客 - 获取Flask Config配置文件内容
评论列表