diff --git a/services/redis.py b/services/redis.py index dbb98d36..48117547 100644 --- a/services/redis.py +++ b/services/redis.py @@ -4,6 +4,7 @@ from typing import Any, Optional, Set, Union import redis.asyncio as aioredis +from settings import REDIS_URL from utils.logger import root_logger as logger # Set redis logging level to suppress DEBUG messages @@ -18,7 +19,7 @@ class RedisService: Provides connection pooling and proper error handling for Redis operations. """ - def __init__(self, redis_url: str = "redis://localhost:6379/0") -> None: + def __init__(self, redis_url: str = REDIS_URL) -> None: self._client: Optional[aioredis.Redis] = None self._redis_url = redis_url # Исправлено на _redis_url self._is_available = aioredis is not None diff --git a/services/viewed.py b/services/viewed.py index 0b302871..08b1ba75 100644 --- a/services/viewed.py +++ b/services/viewed.py @@ -75,7 +75,12 @@ class ViewedStorage: self = ViewedStorage # Подключаемся к Redis если соединение не установлено - if not await redis.ping(): + try: + if not await redis.ping(): + await redis.connect() + except Exception as e: + logger.warning(f"Redis connection check failed: {e}") + # Try to connect anyway await redis.connect() # Логируем настройки Redis соединения @@ -83,6 +88,9 @@ class ViewedStorage: # Получаем список всех ключей migrated_views_* и находим самый последний keys = await redis.execute("KEYS", "migrated_views_*") + if keys is None: + keys = [] + logger.warning("Redis KEYS command returned None, treating as empty list") logger.info("Raw Redis result for 'KEYS migrated_views_*': %d", len(keys)) # Декодируем байтовые строки, если есть