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