This commit is contained in:
xds
2026-02-21 18:31:28 +03:00
parent 9a5d54a373
commit f07105b0e5

View File

@@ -154,16 +154,6 @@ class GenerationService:
gemini=self.gemini
)
self._update_generation_metrics(generation, metrics)
except Exception as e:
await self._handle_generation_failure(generation, e)
raise
finally:
if not progress_task.done():
progress_task.cancel()
try:
await progress_task
except asyncio.CancelledError:
pass
# 3. Process results
created_assets = await self._process_generated_images(generation, generated_bytes_list)
@@ -174,6 +164,13 @@ class GenerationService:
# 5. Notify
if generation.telegram_id and self.bot:
await self._notify_telegram(generation, created_assets)
finally:
if not progress_task.done():
progress_task.cancel()
try:
await progress_task
except asyncio.CancelledError:
pass
async def import_external_generation(self, external_gen) -> Generation:
external_gen.validate_image_source()
@@ -281,8 +278,8 @@ class GenerationService:
try:
async with generation_semaphore:
await self.create_generation(gen)
except Exception:
await self._handle_generation_failure(gen, None)
except Exception as e:
await self._handle_generation_failure(gen, e)
logger.exception(f"Background generation task failed for ID: {gen.id}")
async def _prepare_generation_input(self, generation: Generation) -> Tuple[List[bytes], str]:
@@ -341,7 +338,12 @@ class GenerationService:
async def _handle_generation_failure(self, generation: Generation, error: Optional[Exception]):
logger.error(f"Generation {generation.id} failed: {error}")
generation.status = GenerationStatus.FAILED
generation.failed_reason = str(error) if error else "Unknown error"
# Don't overwrite if reason is already set, unless a new error is provided
if error:
generation.failed_reason = str(error)
elif not generation.failed_reason:
generation.failed_reason = "Unknown error"
generation.updated_at = datetime.now(UTC)
await self.dao.generations.update_generation(generation)