52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
# docker exec -it sf_api python -m app.scripts.monitor_crawler
|
|
import asyncio
|
|
import os
|
|
from sqlalchemy import text
|
|
from app.database import AsyncSessionLocal
|
|
from datetime import datetime
|
|
|
|
async def monitor():
|
|
print(f"\n🛰️ AUTO-DATA CRAWLER MONITOR | {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
|
print("=" * 60)
|
|
|
|
async with AsyncSessionLocal() as db:
|
|
# 1. Összesített statisztika szintenként
|
|
stats_query = text("""
|
|
SELECT level, status, COUNT(*)
|
|
FROM vehicle.auto_data_crawler_queue
|
|
GROUP BY level, status
|
|
ORDER BY level, status;
|
|
""")
|
|
|
|
# 2. Utolsó 5 hiba
|
|
error_query = text("""
|
|
SELECT name, level, error_msg, updated_at
|
|
FROM vehicle.auto_data_crawler_queue
|
|
WHERE status = 'error'
|
|
ORDER BY updated_at DESC LIMIT 5;
|
|
""")
|
|
|
|
res = await db.execute(stats_query)
|
|
rows = res.fetchall()
|
|
|
|
if not rows:
|
|
print("📭 A várólista üres.")
|
|
else:
|
|
print(f"{'SZINT':<15} | {'STÁTUSZ':<12} | {'DARABSZÁM':<10}")
|
|
print("-" * 45)
|
|
for r in rows:
|
|
icon = "⏳" if r[1] == 'pending' else "⚙️" if r[1] == 'processing' else "✅" if r[1] == 'completed' else "❌"
|
|
print(f"{r[0].upper():<15} | {icon} {r[1]:<10} | {r[2]:<10}")
|
|
|
|
errors = await db.execute(error_query)
|
|
error_rows = errors.fetchall()
|
|
|
|
if error_rows:
|
|
print("\n🚨 LEGUTÓBBI HIBÁK:")
|
|
print("-" * 60)
|
|
for e in error_rows:
|
|
print(f"📍 {e[0]} ({e[1]}): {e[2][:70]}... [{e[3].strftime('%H:%M:%S')}]")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(monitor()) |