Python之插件模式(使用import_module导入子模块)

插件模式(使用import_module导入子模块)

# 目录结构
- plugins
		- __init__.py # ProcessFactory 工厂对象
		- base_data_analysis.py # 基类
		- board_data_analysis.py # 具体实现自类


	
### __init__.py 实现

# -*-coding:utf-8-*-
import importlib
from AutoServer.settings import CMDB_PLUGIN_DICT


class ProcessSeverInfoFactory(object):
    def __init__(self):
        pass

    @staticmethod
    def process_server_info(asset_data, server_obj):
        """
            # 处理中控机,采集的资产信息
        :param asset_data:  # 全部资产数据
        :param server_obj:  # 主机外键
        :return:
        """
        for asset_class, path in CMDB_PLUGIN_DICT.items():
            data = asset_data.get(asset_class, {})  # 每一种解析类对应的采集数据
            if not data:  # 没有采集该种类的数据,跳过
                continue
            module_path, class_name = path.rsplit(".", maxsplit=1)
            module = importlib.import_module(module_path)
            cls = getattr(module, class_name)
            print("#" * 40)
            print("资产采集正在解析:", cls.__name__)
            cls_obj = cls(asset_class=asset_class)
            cls_obj.process(data, server_obj)
            print("资产采集解析完毕:", cls.__name__)
            print("#" * 40)


psi_factory = ProcessSeverInfoFactory()
posted @   染指未来  阅读(59)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示