插件模式(使用import_module导入子模块)
- plugins
- __init__.py
- base_data_analysis.py
- board_data_analysis.py
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()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?