• Python【模块】importlib,requests


    内容概要:
         模仿django中间件的加载方式
         importlib模块
         requests模块
       rsplit()
     
    用实际使用的理解来解释两个模块
    importlib模块:
            通常用于动态引入自定义模块,代码中module=importlib.import_module(module_path),module为引入的模块对象,module_path为包含模块路径和模块名的字符串。
    requests模块:
            通常我们通过浏览器发送http请求,在python中,可以用requests模块来实现。
     
     
    应用实例(两者一起应用实例)
    需求:从settings配置文件加载所有插件,插件在src/plugins.nic目录下,分别有是单独文件,注意:django的中间件也是用这种方式加载。
    settings配置
    PLUGIN_ITEMS = {
        "nic": "src.plugins.nic.Nic",
        "disk": "src.plugins.disk.Disk",
    }
    
    API = "http://127.0.0.1:8000/api/server.html"
     
    views代码
    import sys
    import os
    import importlib
    import requests
    BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.append(BASEDIR)
    from conf import settings
    
    server_info = {}
    for k,v in settings.PLUGIN_ITEMS.items():
        # 找到v字符串:src.plugins.nic.Nic,src.plugins.disk.Disk
        module_path,cls_name = v.rsplit('.',maxsplit=1) # rsplit,倒叙的split,maxsplit=1,第一个'.'
        module = importlib.import_module(module_path)
        cls = getattr(module,cls_name)
        obj = cls()
        ret = obj.process()
        server_info[k] = ret
    
    requests.post(
        url=settings.API,
        data=server_info
    )
    
    tips:
    module_path,cls_name = v.rsplit('.',maxsplit=1) 
    # rsplit,倒叙的split,maxsplit=1,第一个'.'
     
  • 相关阅读:
    陶哲轩实分析 习题 12.5.8 :度量空间中有界闭集不一定是紧集
    陶哲轩实分析 习题 12.5.12
    陶哲轩实分析 习题 12.5.4,12.5.5
    陶哲轩实分析 习题 12.5.10
    陶哲轩实分析 习题 12.5.4,12.5.5
    陶哲轩实分析 习题 12.5.10
    opencvDCT离散余弦变换
    opencvPCA主要成分分析
    opencvCanny边缘检测
    opencvdft离散傅立叶变换(把空域变成频域)
  • 原文地址:https://www.cnblogs.com/lucaq/p/7597618.html
Copyright © 2020-2023  润新知