文章内容
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配置文件内容
评论列表