akkudoktoreos.server.retentionmanager
Retention Manager for Akkudoktor-EOS server.
This module provides a single long-running background task that owns the scheduling of all periodic server-maintenance jobs (cache cleanup, DB autosave, config reload, …).
- Responsibilities:
Run a fast “heartbeat” loop (default 5 s) — the compaction tick.
Maintain a registry of
ManagedJobentries, each with its own interval.Re-read the live configuration on every tick so interval changes take effect immediately without a server restart.
Track per-job state: last run time, last duration, last error, run count.
Expose that state for health-check / metrics endpoints.
Example
Typical usage inside your FastAPI lifespan:
from akkudoktoreos.core.coreabc import get_config
from akkudoktoreos.server.rest.retention_manager import RetentionManager
from akkudoktoreos.server.rest.tasks import make_repeated_task
manager = RetentionManager(get_config().get_nested_value)
manager.register("cache_cleanup", cache_cleanup_fn, interval_attr="server/cache_cleanup_interval")
manager.register("db_autosave", db_autosave_fn, interval_attr="server/db_autosave_interval")
@asynccontextmanager
async def lifespan(app: FastAPI):
tick_task = make_repeated_task(manager.tick, seconds=5, wait_first=2)
await tick_task()
yield
Classes
|
Runtime state tracked for a single managed job. |
|
Orchestrates all periodic server-maintenance jobs. |