文章内容

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配置文件内容

分享到:

发表评论

评论列表