diff --git a/src/server/services/image_loading_service.py b/src/server/services/image_loading_service.py index 7c27f6a..16e0a0b 100644 --- a/src/server/services/image_loading_service.py +++ b/src/server/services/image_loading_service.py @@ -162,17 +162,18 @@ class ImageLoadingService: for i in range(0, len(series_list), self.BATCH_SIZE): batch = series_list[i : i + self.BATCH_SIZE] - tasks = [ - self.load_series_images( + # Process each series sequentially to avoid concurrent use of the + # same AsyncSession (SQLAlchemy async sessions are not thread-safe + # for concurrent operations). BATCH_SIZE still paces TMDB requests. + results: List[Dict[str, Any] | Exception] = [] + for series in batch: + result = await self.load_series_images( key=series["key"], folder=series["folder"], anime_directory=anime_directory, db=db, ) - for series in batch - ] - - results = await asyncio.gather(*tasks, return_exceptions=True) + results.append(result) for series, result in zip(batch, results): if isinstance(result, Exception):