feat: Limit concurrent image generations to 4 using an asyncio semaphore.

This commit is contained in:
xds
2026-02-16 00:30:34 +03:00
parent 2d3da59de9
commit e2c050515d
7 changed files with 8 additions and 3 deletions

View File

@@ -22,6 +22,9 @@ from adapters.s3_adapter import S3Adapter
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
# Limit concurrent generations to 4
generation_semaphore = asyncio.Semaphore(4)
# --- Вспомогательная функция генерации --- # --- Вспомогательная функция генерации ---
async def generate_image_task( async def generate_image_task(
@@ -141,10 +144,12 @@ class GenerationService:
generation_model.id = gen_id generation_model.id = gen_id
async def runner(gen): async def runner(gen):
logger.info(f"Starting background generation task for ID: {gen.id}") logger.info(f"Generation {gen.id} entered queue (waiting for slot)...")
try: try:
await self.create_generation(gen) async with generation_semaphore:
logger.info(f"Background generation task finished for ID: {gen.id}") logger.info(f"Starting background generation task for ID: {gen.id}")
await self.create_generation(gen)
logger.info(f"Background generation task finished for ID: {gen.id}")
except Exception: except Exception:
# если генерация уже пошла и упала — пометим FAILED # если генерация уже пошла и упала — пометим FAILED
try: try: