31 lines
989 B
Python
31 lines
989 B
Python
"""Celery tasks for story audio cache maintenance."""
|
|
|
|
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 prune_story_audio_cache
|
|
from app.tasks.utils import run_with_disposed_engine
|
|
|
|
logger = get_logger(__name__)
|
|
|
|
|
|
@celery_app.task
|
|
def prune_story_audio_cache_task():
|
|
"""Daily task to prune expired story audio cache files."""
|
|
logger.info("prune_story_audio_cache_task_started")
|
|
|
|
async def _run():
|
|
session_factory = _get_session_factory()
|
|
async with session_factory() as session:
|
|
return await prune_story_audio_cache(session)
|
|
|
|
try:
|
|
result = asyncio.run(run_with_disposed_engine(_run()))
|
|
logger.info("prune_story_audio_cache_task_completed", **result)
|
|
return result
|
|
except Exception as exc:
|
|
logger.error("prune_story_audio_cache_task_failed", error=str(exc))
|
|
raise
|