83 lines
2.9 KiB
Python
83 lines
2.9 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
强制重新加载API模块并测试
|
||
"""
|
||
import sys
|
||
import os
|
||
import importlib
|
||
|
||
# 添加server目录到路径
|
||
server_path = os.path.join(os.path.dirname(__file__), 'server')
|
||
sys.path.insert(0, server_path)
|
||
|
||
def force_reload_test():
|
||
print("=== 强制重新加载测试 ===")
|
||
|
||
try:
|
||
# 清理模块缓存
|
||
modules_to_clear = []
|
||
for module_name in list(sys.modules.keys()):
|
||
if 'model_manager' in module_name or 'utils' in module_name:
|
||
modules_to_clear.append(module_name)
|
||
|
||
for module_name in modules_to_clear:
|
||
if module_name in sys.modules:
|
||
del sys.modules[module_name]
|
||
print(f"清理模块缓存: {module_name}")
|
||
|
||
# 重新导入
|
||
from utils.model_manager import ModelManager
|
||
|
||
# 测试ModelManager
|
||
manager = ModelManager()
|
||
models = manager.list_models()
|
||
|
||
print(f"\n重新加载后,ModelManager找到 {len(models)} 个模型")
|
||
|
||
# 手动执行API端点逻辑
|
||
print("\n=== 手动模拟API端点逻辑 ===")
|
||
|
||
formatted_models = []
|
||
for model in models:
|
||
# 生成model_id的逻辑(与API相同)
|
||
model_id = model.get('filename', '').replace('.pth', '')
|
||
if not model_id:
|
||
# 备用方案
|
||
product_id = model.get('product_id', 'unknown')
|
||
model_type = model.get('model_type', 'unknown')
|
||
version = model.get('version', 'v1')
|
||
model_id = f"{model_type}_product_{product_id}_{version}"
|
||
|
||
formatted_model = {
|
||
'model_id': model_id,
|
||
'filename': model.get('filename', ''), # 关键字段
|
||
'product_id': model.get('product_id', ''),
|
||
'model_type': model.get('model_type', ''),
|
||
'version': model.get('version', 'v1'),
|
||
'metrics': model.get('metrics', {}),
|
||
}
|
||
formatted_models.append(formatted_model)
|
||
|
||
print(f"格式化后模型数量: {len(formatted_models)}")
|
||
|
||
for i, model in enumerate(formatted_models):
|
||
print(f"\n模型 {i+1}:")
|
||
print(f" filename: '{model.get('filename', 'MISSING')}'")
|
||
print(f" model_id: '{model.get('model_id', 'MISSING')}'")
|
||
print(f" product_id: '{model.get('product_id', 'MISSING')}'")
|
||
|
||
if model.get('filename') and model.get('model_id'):
|
||
print(" ✓ 该模型应该能正常显示详情和删除按钮")
|
||
else:
|
||
print(" ✗ 该模型有问题")
|
||
|
||
return formatted_models
|
||
|
||
except Exception as e:
|
||
print(f"测试失败: {e}")
|
||
import traceback
|
||
traceback.print_exc()
|
||
return []
|
||
|
||
if __name__ == "__main__":
|
||
force_reload_test() |