feat: move unified generation to background worker

This commit is contained in:
2026-04-19 17:29:37 +08:00
parent 5318de670f
commit 6fb128955f
15 changed files with 632 additions and 285 deletions

View File

@@ -0,0 +1,38 @@
"""Background execution for unified generation workflows."""
import asyncio
from app.core.celery_app import celery_app
from app.core.logging import get_logger
from app.db.database import _get_session_factory
from app.services.story_service import run_generation_job_service
logger = get_logger(__name__)
@celery_app.task
def run_generation_workflow_task(job_id: str):
"""Execute one accepted generation job in the Celery worker."""
logger.info("generation_workflow_task_started", job_id=job_id)
async def _run():
session_factory = _get_session_factory()
async with session_factory() as session:
return await run_generation_job_service(job_id, session)
try:
result = asyncio.run(_run())
logger.info(
"generation_workflow_task_completed",
job_id=job_id,
executed=bool(result),
)
return {"job_id": job_id, "executed": bool(result)}
except Exception as exc:
logger.error(
"generation_workflow_task_failed",
job_id=job_id,
error=str(exc),
)
raise