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.memory_service import prune_expired_memories logger = get_logger(__name__) @celery_app.task def prune_memories_task(): """Daily task to prune expired memories.""" logger.info("prune_memories_task_started") async def _run(): # Ensure engine is initialized in this process session_factory = _get_session_factory() async with session_factory() as session: return await prune_expired_memories(session) try: # Create a new event loop for this task execution count = asyncio.run(_run()) logger.info("prune_memories_task_completed", deleted_count=count) return f"Deleted {count} expired memories" except Exception as exc: logger.error("prune_memories_task_failed", error=str(exc)) raise