catch exception

This commit is contained in:
xds
2026-02-04 18:23:36 +03:00
parent 53b2bce1b2
commit bf8396a790
5 changed files with 25 additions and 9 deletions

View File

@@ -5,6 +5,7 @@ from datetime import datetime, UTC
from typing import List, Optional
from io import BytesIO
from adapters.Exception import GoogleGenerationException
from adapters.google_adapter import GoogleAdapter
from api.models.GenerationRequest import GenerationRequest, GenerationResponse
# Импортируйте ваши модели DAO, Asset, Generation корректно
@@ -28,16 +29,17 @@ async def generate_image_task(
Обертка для вызова синхронного метода Gemini в отдельном потоке.
Возвращает список байтов сгенерированных изображений.
"""
try :
# Запускаем блокирующую операцию в отдельном потоке, чтобы не тормозить Event Loop
generated_images_io: List[BytesIO] = await asyncio.to_thread(
gemini.generate_image,
prompt=prompt,
images_list=media_group_bytes,
aspect_ratio=aspect_ratio,
quality=quality,
)
generated_images_io: List[BytesIO] = await asyncio.to_thread(
gemini.generate_image,
prompt=prompt,
images_list=media_group_bytes,
aspect_ratio=aspect_ratio,
quality=quality,
)
except GoogleGenerationException as e:
raise e
images_bytes = []
if generated_images_io:
for img_io in generated_images_io:
@@ -154,6 +156,12 @@ class GenerationService:
quality=generation.quality,
gemini=self.gemini
)
except GoogleGenerationException as e:
generation.status = GenerationStatus.FAILED
generation.failed_reason = str(e.message)
generation.updated_at = datetime.now(UTC)
await self.dao.generations.update_generation(generation)
raise
except Exception as e:
# Тут стоит добавить логирование ошибки
logging.error(f"Generation failed: {e}")