Files
momentry_core/quick_status_check.py
Warren b54c2def30 feat: add migrations, test scripts, and utility tools
- Add database migrations (006-028) for face recognition, identity, file_uuid
- Add test scripts for ASR, face, search, processing
- Add portal frontend (Tauri)
- Add config, benchmark, and monitoring utilities
- Add model checkpoints and pretrained model references
2026-04-30 15:11:53 +08:00

129 lines
4.3 KiB
Python
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/opt/homebrew/bin/python3.11
"""
快速状态检查
"""
import os
import sys
import time
import psutil
from datetime import datetime
def quick_check():
print("=" * 60)
print("快速状态检查")
print(f"时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print("=" * 60)
# 系统负载
load = os.getloadavg()
cpu = psutil.cpu_percent(interval=1)
mem = psutil.virtual_memory()
print(f"\n📊 系统状态:")
print(f" 负载: {load[0]:.2f} (1min), {load[1]:.2f} (5min), {load[2]:.2f} (15min)")
print(f" CPU: {cpu:.1f}%")
print(
f" 内存: {mem.percent:.1f}% ({mem.used / (1024**3):.1f}GB / {mem.total / (1024**3):.1f}GB)"
)
# 检查处理器进程
print(f"\n🔍 处理器进程:")
processor_counts = {}
high_cpu_processes = []
for proc in psutil.process_iter(["pid", "name", "cmdline", "cpu_percent"]):
try:
cmdline = " ".join(proc.info["cmdline"]) if proc.info["cmdline"] else ""
cpu = proc.info.get("cpu_percent", 0)
# 检查各种处理器
if "asr_processor" in cmdline:
processor_counts["asr"] = processor_counts.get("asr", 0) + 1
if cpu > 50:
high_cpu_processes.append(f"ASR PID {proc.pid}: {cpu:.1f}%")
elif "cut_processor" in cmdline:
processor_counts["cut"] = processor_counts.get("cut", 0) + 1
if cpu > 50:
high_cpu_processes.append(f"CUT PID {proc.pid}: {cpu:.1f}%")
elif "ocr_processor" in cmdline:
processor_counts["ocr"] = processor_counts.get("ocr", 0) + 1
elif "yolo_processor" in cmdline:
processor_counts["yolo"] = processor_counts.get("yolo", 0) + 1
elif "face_processor" in cmdline:
processor_counts["face"] = processor_counts.get("face", 0) + 1
elif "pose_processor" in cmdline:
processor_counts["pose"] = processor_counts.get("pose", 0) + 1
except (psutil.NoSuchProcess, psutil.AccessDenied):
continue
# 显示处理器计数
for proc_type, count in processor_counts.items():
print(f" {proc_type.upper()}: {count} 个进程")
# 显示高CPU进程
if high_cpu_processes:
print(f"\n⚠️ 高CPU进程:")
for proc_info in high_cpu_processes[:5]: # 只显示前5个
print(f" {proc_info}")
if len(high_cpu_processes) > 5:
print(f" ... 还有 {len(high_cpu_processes) - 5} 个高CPU进程")
# 检查输出目录
output_dir = "/Users/accusys/momentry/output"
if os.path.exists(output_dir):
asr_files = len(
[f for f in os.listdir(output_dir) if "_asr_" in f and f.endswith(".json")]
)
cut_files = len(
[f for f in os.listdir(output_dir) if "_cut_" in f and f.endswith(".json")]
)
print(f"\n📁 输出文件:")
print(f" ASR文件: {asr_files}")
print(f" CUT文件: {cut_files}")
# 状态总结
print(f"\n📈 状态总结:")
if load[0] > 8:
print(f" ⚠️ 系统负载很高 ({load[0]:.2f})")
if processor_counts.get("asr", 0) > 0 or processor_counts.get("cut", 0) > 0:
print(f" 可能原因: ASR/CUT 视频处理中")
elif load[0] > 4:
print(f" 系统负载中等 ({load[0]:.2f})")
else:
print(f" ✅ 系统负载正常 ({load[0]:.2f})")
if mem.percent > 90:
print(f" ⚠️ 内存使用率很高 ({mem.percent:.1f}%)")
elif mem.percent > 80:
print(f" 内存使用率较高 ({mem.percent:.1f}%)")
else:
print(f" ✅ 内存使用率正常 ({mem.percent:.1f}%)")
# 建议
print(f"\n💡 建议:")
if processor_counts.get("asr", 0) > 0 or processor_counts.get("cut", 0) > 0:
print(f" 1. ASR/CUT 处理进行中,建议等待完成")
print(f" 2. 处理完成后系统负载会恢复正常")
else:
print(f" 1. 没有运行中的处理器,可以继续下一步工作")
print(f"\n⏱️ 检查完成")
print("=" * 60)
if __name__ == "__main__":
try:
quick_check()
except KeyboardInterrupt:
print(f"\n检查被中断")
sys.exit(0)
except Exception as e:
print(f"\n错误: {e}")
sys.exit(1)