#!/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()