zenith-backend / app /scripts /cleanup_metrics.py
teoat's picture
Upload folder using huggingface_hub
4ae946d verified
"""
Metrics Cleanup Script
Deletes PerformanceMetric records older than 30 days to manage database size.
Intended to be run as a cron job or scheduled task.
"""
import os
import sys
from datetime import datetime, timedelta
# Add backend to path for imports
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
from core.database import SessionLocal
from core.logging import logger
from core.models.performance import PerformanceMetric
def cleanup_metrics(retention_days: int = 30):
"""Delete metrics older than retention period"""
cutoff_date = datetime.utcnow() - timedelta(days=retention_days)
logger.info(f"Starting metrics cleanup. Deleting records older than {cutoff_date.isoformat()}")
db = SessionLocal()
try:
deleted_count = db.query(PerformanceMetric).filter(
PerformanceMetric.timestamp < cutoff_date
).delete(synchronize_session=False)
db.commit()
logger.info(f"✅ Cleanup complete: Deleted {deleted_count} stale metric records.")
except Exception as e:
db.rollback()
logger.error(f"❌ Cleanup failed: {e}")
finally:
db.close()
if __name__ == "__main__":
retention = int(os.getenv("METRICS_RETENTION_DAYS", 30))
cleanup_metrics(retention)