Initial commit: clean project structure
- Backend: FastAPI + SQLAlchemy + Celery (Python 3.11+) - Frontend: Vue 3 + TypeScript + Pinia + Tailwind - Admin Frontend: separate Vue 3 app for management - Docker Compose: 9 services orchestration - Specs: design prototypes, memory system PRD, product roadmap Cleanup performed: - Removed temporary debug scripts from backend root - Removed deprecated admin_app.py (embedded UI) - Removed duplicate docs from admin-frontend - Updated .gitignore for Vite cache and egg-info
This commit is contained in:
29
backend/app/tasks/memory.py
Normal file
29
backend/app/tasks/memory.py
Normal file
@@ -0,0 +1,29 @@
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user