Files
ad/molodetz/services/housekeeping.py
T

37 lines
1.3 KiB
Python

# retoor <retoor@molodetz.nl>
from datetime import datetime, timedelta, timezone
from molodetz.database import count_audit, get_int_setting, prune_audit, prune_expired_sessions
from molodetz.services.base import BaseService
class HousekeepingService(BaseService):
name = "housekeeping"
title = "Housekeeping"
description = "Ruimt verlopen sessies op en snoeit het auditlog volgens de bewaartermijn."
default_interval = 3600
min_interval = 60
metrics_interval = 300
def __init__(self):
super().__init__()
self.last_sessions = 0
self.last_audit = 0
async def run_once(self):
self.last_sessions = prune_expired_sessions()
days = max(1, get_int_setting("audit_retention_days", 365))
cutoff = (datetime.now(timezone.utc) - timedelta(days=days)).isoformat()
self.last_audit = prune_audit(cutoff)
self.log(f"sessies verwijderd: {self.last_sessions}, auditregels gesnoeid: {self.last_audit}")
def collect_metrics(self):
return {
"cards": [
{"label": "Auditregels", "value": count_audit()},
{"label": "Laatste sessie-opruiming", "value": self.last_sessions},
{"label": "Laatste auditsnoei", "value": self.last_audit},
],
"table": None,
}