zoukankan      html  css  js  c++  java
  • 记Flask的一种设置项目配置的方法!

    在做项目时,碰到的一种设置配置的方式,主要是因为公司将所有的配置写成了一个公司专有的配置库(各种资源地址,账号等),上线后的项目需要什么配置是从这个配置库的读取。但在开发时不能使用,所以在开发时需要自定义配置,且在上线时能够轻松的移除这些开发环境的配置。

    在我们封装/自定义的文件中实现类定义:(如在文件 myjenkins.py)

    
    class FlaskJenkins(object):
    
        def __init__(self, app=None):
            self.app = app
            self._j = None
            if app:
                self.init_app(app)
    
        def init_app(self, app):
            app.config.setdefault('JENKINS_URL', 'https://jenkins.hahha.com')        #设置默认的 配置信息,如果没有配置才会设置成功,如已有自定义配置则不会设置这些默认配置。(实际上公司的配置库里有这个配置,在初始化 app 时就已经在app.config中存在这些配置了,这里是示范。)
            app.config.setdefault('JENKINS_USERNAME', 'username')
            app.config.setdefault('JENKINS_PASSWORD', 'password')
            self._j = Jenkins(
                url=app.config['JENKINS_URL'],
                username=app.config['JENKINS_USERNAME'],
                password=app.config['JENKINS_PASSWORD']
            )
    
        def get_job_info(self, name, depth=0, fetch_all_builds=False):
            return self._j.get_job_info(name, depth, fetch_all_builds)
    
        def others_function(*args, **kwargs)
            pass
    
    

    在 extentions.py 中:

    
    from myjenkins import FlaskJenkins
    
    
    jenkins = FlaskJenkins()
    
    

    app 从配置文件中读取自定义配置,看是否有自定义的配置。配置文件 config.py 如下:

    class Config(object):
    
        CONFIG_CENTER = 'jarvis/config'
    
        SQLALCHEMY_TRACK_MODIFICATIONS = False
    
        SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123456@localhost:3306/jarvis?charset=utf8"
    
        JENKINS_USERNAME = "root"
        JENKINS_PASSWORD = "passwd"
        JENKINS_URL = "http://localhost:9090"
    
    
    

    在项目初始化资源的文件中,去初始化我们的这个 jenkins (如jenkins地址,账号),如果在上面的自定义配置文件中没有配置,则会读取默认配置进行设置。
    (如果没有在config.py中写入自定义的 JENKINS_USERNAME, JENKINS_PASSWORD, JENKINS_URL,则FlaskJenkins中的默认配置就会设置生效)

    
    from extentions import jenkins
    
    
    jenkins.inint_app(app)
    
    

    在其他需要用到jenkins的文件中,直接从extentions.py中导入 jenkins :

    
    from extentions import jenkins
    
    
    # 调用方法
    jenkins.other_functions()
    
    
  • 相关阅读:
    [SinGuLaRiTy] NOIP模拟题 by liu_runda
    [SinGuLaRiTy] NOIP互测模拟赛
    [SinGuLaRiTy] Nescafe 24杯模拟赛
    [SinGuLaRiTy] 复习模板-搜索
    [SinGuLaRiTy] 复习模板-高精度模板
    [SinGuLaRiTy] 复习模板-图论
    [SinGuLaRiTy] 复习模板-数据结构
    [SinGuLaRiTy] 高级搜索算法
    [SinGuLaRiTy] 2017 百度之星程序设计大赛 复赛
    [SinGuLaRiTy] 2017 百度之星程序设计大赛 初赛B
  • 原文地址:https://www.cnblogs.com/ChangAn223/p/11431009.html
Copyright © 2011-2022 走看看