fixes
This commit is contained in:
@@ -154,16 +154,6 @@ class GenerationService:
|
|||||||
gemini=self.gemini
|
gemini=self.gemini
|
||||||
)
|
)
|
||||||
self._update_generation_metrics(generation, metrics)
|
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
|
# 3. Process results
|
||||||
created_assets = await self._process_generated_images(generation, generated_bytes_list)
|
created_assets = await self._process_generated_images(generation, generated_bytes_list)
|
||||||
@@ -174,6 +164,13 @@ class GenerationService:
|
|||||||
# 5. Notify
|
# 5. Notify
|
||||||
if generation.telegram_id and self.bot:
|
if generation.telegram_id and self.bot:
|
||||||
await self._notify_telegram(generation, created_assets)
|
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:
|
async def import_external_generation(self, external_gen) -> Generation:
|
||||||
external_gen.validate_image_source()
|
external_gen.validate_image_source()
|
||||||
@@ -281,8 +278,8 @@ class GenerationService:
|
|||||||
try:
|
try:
|
||||||
async with generation_semaphore:
|
async with generation_semaphore:
|
||||||
await self.create_generation(gen)
|
await self.create_generation(gen)
|
||||||
except Exception:
|
except Exception as e:
|
||||||
await self._handle_generation_failure(gen, None)
|
await self._handle_generation_failure(gen, e)
|
||||||
logger.exception(f"Background generation task failed for ID: {gen.id}")
|
logger.exception(f"Background generation task failed for ID: {gen.id}")
|
||||||
|
|
||||||
async def _prepare_generation_input(self, generation: Generation) -> Tuple[List[bytes], str]:
|
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]):
|
async def _handle_generation_failure(self, generation: Generation, error: Optional[Exception]):
|
||||||
logger.error(f"Generation {generation.id} failed: {error}")
|
logger.error(f"Generation {generation.id} failed: {error}")
|
||||||
generation.status = GenerationStatus.FAILED
|
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)
|
generation.updated_at = datetime.now(UTC)
|
||||||
await self.dao.generations.update_generation(generation)
|
await self.dao.generations.update_generation(generation)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user