ShopTRAINING/test/check_training_status.py
2025-07-02 11:05:23 +08:00

92 lines
2.8 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
检查训练任务状态
"""
import os
import sys
import urllib.request
import json
# 设置UTF-8编码
os.environ['PYTHONIOENCODING'] = 'utf-8'
os.environ['PYTHONLEGACYWINDOWSSTDIO'] = '0'
# Windows系统额外配置
if os.name == 'nt':
try:
os.system('chcp 65001 >nul 2>&1')
if hasattr(sys.stdout, 'reconfigure'):
sys.stdout.reconfigure(encoding='utf-8', errors='replace')
sys.stderr.reconfigure(encoding='utf-8', errors='replace')
except Exception as e:
print(f"Warning: Failed to set UTF-8 encoding: {e}")
def get_training_status():
"""获取所有训练任务状态"""
try:
with urllib.request.urlopen("http://127.0.0.1:5000/api/training", timeout=5) as response:
return json.loads(response.read().decode('utf-8'))
except Exception as e:
return {'error': str(e)}
def main():
"""主函数"""
print("📊 检查训练任务状态")
print("=" * 50)
result = get_training_status()
if 'error' in result:
print(f"❌ 获取状态失败: {result['error']}")
return
tasks = result.get('data', [])
if not tasks:
print("📋 没有找到训练任务")
return
print(f"📋 找到 {len(tasks)} 个训练任务:")
print()
for i, task in enumerate(tasks, 1):
print(f"🔖 任务 {i}:")
print(f" ID: {task.get('task_id', 'N/A')}")
print(f" 状态: {task.get('status', 'N/A')}")
print(f" 产品: {task.get('product_id', 'N/A')}")
print(f" 模型: {task.get('model_type', 'N/A')}")
print(f" 开始时间: {task.get('start_time', 'N/A')}")
if task.get('error'):
print(f" ❌ 错误: {task.get('error')}")
if task.get('metrics'):
print(f" 📊 指标: {task.get('metrics')}")
else:
print(f" 📊 指标: 无")
print()
# 分析状态
running_tasks = [t for t in tasks if t.get('status') == 'running']
completed_tasks = [t for t in tasks if t.get('status') == 'completed']
failed_tasks = [t for t in tasks if t.get('status') == 'failed']
print("📈 状态统计:")
print(f" 🏃 运行中: {len(running_tasks)}")
print(f" ✅ 已完成: {len(completed_tasks)}")
print(f" ❌ 失败: {len(failed_tasks)}")
if running_tasks:
print("\n⚠️ 发现运行中的任务:")
print(" 这些任务可能卡住了,应该检查日志输出")
if failed_tasks:
print("\n❌ 失败任务详情:")
for task in failed_tasks:
print(f" 任务 {task.get('task_id')}: {task.get('error')}")
if __name__ == "__main__":
main()