#!/usr/bin/env python3 """ Мониторинг Redis Pub/Sub для проверки прямой публикации из n8n """ import redis import json from datetime import datetime print("=" * 60) print("🎧 МОНИТОРИНГ REDIS PUB/SUB") print("=" * 60) # Подключение к Redis r = redis.Redis( host='crm.clientright.ru', port=6379, password='CRM_Redis_Pass_2025_Secure!', decode_responses=True ) # Проверка подключения try: r.ping() print("✅ Redis подключен!") except Exception as e: print(f"❌ Ошибка подключения: {e}") exit(1) # Подписка на все каналы ocr_events:* pubsub = r.pubsub() pubsub.psubscribe('ocr_events:*') print(f"📡 Слушаем каналы: ocr_events:*") print(f"⏰ Запущено: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") print("-" * 60) print("\n⏳ Ожидаю события... (Ctrl+C для выхода)\n") # Счётчик событий event_count = 0 try: for message in pubsub.listen(): if message['type'] == 'pmessage': event_count += 1 print(f"\n{'='*60}") print(f"📢 СОБЫТИЕ #{event_count}") print(f"⏰ Время: {datetime.now().strftime('%H:%M:%S')}") print(f"📺 Канал: {message['channel']}") print(f"📦 Данные:") print("-" * 60) try: # Пытаемся распарсить как JSON data = json.loads(message['data']) print(json.dumps(data, indent=2, ensure_ascii=False)) except json.JSONDecodeError: # Если не JSON - показываем как есть print(message['data']) print(f"{'='*60}\n") except KeyboardInterrupt: print(f"\n\n✅ Остановлено. Получено событий: {event_count}") print(f"⏰ Завершено: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") finally: pubsub.close() r.close()