92 lines
2.8 KiB
Python
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() |