diff --git a/src/core/services/tmdb_client.py b/src/core/services/tmdb_client.py index 925e59f..d8c4a59 100644 --- a/src/core/services/tmdb_client.py +++ b/src/core/services/tmdb_client.py @@ -115,6 +115,12 @@ class TMDBClient: for attempt in range(max_retries): try: + # Re-ensure session before each attempt in case it was closed + await self._ensure_session() + + if self.session is None: + raise TMDBAPIError("Session is not available") + logger.debug(f"TMDB API request: {endpoint} (attempt {attempt + 1})") async with self.session.get(url, params=params, timeout=aiohttp.ClientTimeout(total=30)) as resp: if resp.status == 401: @@ -133,8 +139,14 @@ class TMDBClient: self._cache[cache_key] = data return data - except aiohttp.ClientError as e: + except (aiohttp.ClientError, AttributeError) as e: last_error = e + # If connector/session was closed, try to recreate it + if "Connector is closed" in str(e) or isinstance(e, AttributeError): + logger.warning(f"Session issue detected, recreating session: {e}") + self.session = None + await self._ensure_session() + if attempt < max_retries - 1: logger.warning(f"Request failed (attempt {attempt + 1}): {e}, retrying in {delay}s") await asyncio.sleep(delay)