1import datetime
2
3from plain.chores import register_chore
4from plain.runtime import settings
5from plain.utils import timezone
6
7from .models import JobResult
8
9
10@register_chore("jobs")
11def clear_completed() -> str:
12 """Delete all completed job results in all queues."""
13 cutoff = timezone.now() - datetime.timedelta(
14 seconds=settings.JOBS_RESULTS_RETENTION
15 )
16 results = JobResult.query.filter(created_at__lt=cutoff).delete()
17 return f"{results[0]} jobs deleted"