# agents/check_agents.py | |
import os | |
import sys | |
from datetime import datetime, UTC | |
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) | |
from tools.storage import Storage | |
storage = Storage() | |
def print_config(): | |
print("⚙️ Конфигурация:") | |
rows = storage.conn.execute("SELECT key, value FROM config").fetchall() | |
if not rows: | |
print(" • (таблица config пуста)") | |
for key, value in rows: | |
print(f" • {key:20} = {value}") | |
print() | |
def check_all_processes(): | |
print_config() | |
print(f"🗄️ Путь к базе данных: {storage.db_path}\n") | |
processes = storage.conn.execute("SELECT name, heartbeat FROM main_process").fetchall() | |
if not processes: | |
print("⛔ В базе нет активных процессов.") | |
return | |
print("📋 Статус процессов:") | |
now = datetime.now(UTC) | |
for name, heartbeat in processes: | |
try: | |
hb_time = datetime.fromisoformat(heartbeat) | |
delta = (now - hb_time).total_seconds() | |
status = "🟢 Активен" if delta < 180 else "🔴 Не отвечает" | |
print(f" • {name:20} — {status} (обновлён {int(delta)} сек. назад)") | |
except Exception as e: | |
print(f" • {name:20} — ⚠️ Ошибка: {e}") | |
if __name__ == "__main__": | |
check_all_processes() | |