data-extract / app /utils /cleanup.py
validops-east-1's picture
feat: updated
936f0bf
Raw
History Blame Contribute Delete
923 Bytes
from __future__ import annotations
import asyncio
import shutil
import time
from pathlib import Path
import structlog
from app.core.config import settings
logger = structlog.get_logger(__name__)
async def cleanup_loop() -> None:
output_dir = Path(settings.OUTPUT_DIR)
while True:
await asyncio.sleep(600)
await _sweep(output_dir)
async def _sweep(output_dir: Path) -> None:
if not output_dir.exists():
return
now = time.time()
removed = 0
for job_dir in output_dir.iterdir():
if not job_dir.is_dir():
continue
if now - job_dir.stat().st_mtime > settings.OUTPUT_TTL_SECONDS:
try:
shutil.rmtree(job_dir)
removed += 1
except Exception:
logger.exception("cleanup_error", path=str(job_dir))
if removed:
logger.info("cleanup_complete", removed_jobs=removed)