feat: move unified generation to background worker
This commit is contained in:
38
backend/app/tasks/generation_workflow.py
Normal file
38
backend/app/tasks/generation_workflow.py
Normal 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
|
||||
Reference in New Issue
Block a user