fixes
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user