zoukankan      html  css  js  c++  java
  • 模拟Django中settings配置文件写自己的settings配置文件

    对于Django中settings配置文件的神奇之处我就不谈了,在这里我想模拟Django的配置写一份属于自己的配置文件

    在写一个完整的项目之前,我对自定制一个启动文件run.py

    import sys
    import os
    BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.append(BASEDIR)
    os.environ['AUTO_CLIENT_SETTINGS'] = "conf.settings"
    from src import script
    
    
    if __name__ == '__main__':
        script.start()


    接下来会按照主函数的逻辑进入我的script文件

    
    
    from lib.config import settings
    from .client import AgentClient
    from .client import SaltSshClient
    
    def start():
        if settings.MODE == 'AGENT':
            obj = AgentClient()
        elif settings.MODE == "SSH" or settings.MODE == 'SALT':
            obj = SaltSshClient()
        else:
            raise Exception('模式仅支持:AGENT/SSH/SALT')
        obj.exec()
    
    

    注意上边我标红的那一行,他引用的是配置文件里的settings变量,那么settings变量到底是什么呢?

    在整个中,有lib文件夹,lib文件夹下有config文件夹,config文件夹下有__init__.py文件,文件代码如下:

    import os
    import importlib
    from . import global_settings
    
    class Settings(object):
        """
        global_settings,配置获取
        settings.py,配置获取
        """
        def __init__(self):
    
            for item in dir(global_settings):
                if item.isupper():
                    k = item
                    v = getattr(global_settings,item)
                    setattr(self,k,v)
    
            setting_path = os.environ.get('AUTO_CLIENT_SETTINGS')
            md_settings = importlib.import_module(setting_path)
            for item in dir(md_settings):
                if item.isupper():
                    k = item
                    v = getattr(md_settings,item)
                    setattr(self,k,v)
    
    
    settings = Settings()

    注意之前script引用的是该py文件中的一个实例化对象,通过Settings类的__init__方法,我们可以知道,settings在实例化的过程中,分别按照先后顺序把全局的配置文件和普通配置文件里的变量全部赋值给了setting对象(也就是赋予了属性)。

    那么这时我们在开始引用的setting就实现了自动读取所有配置文件信息的功能,也就可以在项目中自由自在的使用了。

  • 相关阅读:
    理解MapReduce计算构架
    熟悉HBase基本操作
    爬虫大作业
    熟悉常用的HDFS操作
    数据结构化与保存
    使用正则表达式,取得点击次数,函数抽离
    爬取校园新闻首页的新闻
    网络爬虫基础练习
    课后作业-阅读任务-阅读提问-5
    课后作业-阅读任务-阅读提问-4
  • 原文地址:https://www.cnblogs.com/575dsj/p/7601701.html
Copyright © 2011-2022 走看看