Files
webmail-client/backend/app/sync/supervisor.py
T

30 lines
904 B
Python
Raw Normal View History

"""Live-sync entrypoint (refactor §2, step 3).
2026-07-17 23:20:34 +02:00
The sync worker's ``on_startup`` starts a :class:`SyncCoordinator`, which claims
accounts from the ``sync:live`` registry via Redis leases and runs one
:class:`~app.sync.runner.AccountRunner` per owned account. ``on_shutdown`` stops
it, releasing every lease so peers can take the accounts over immediately.
2026-07-17 23:20:34 +02:00
"""
from __future__ import annotations
import logging
from typing import Any
from app.sync.coordinator import SyncCoordinator
2026-07-17 23:20:34 +02:00
logger = logging.getLogger(__name__)
async def start_supervisor(ctx: dict[str, Any]) -> None:
coordinator = SyncCoordinator()
await coordinator.start()
ctx["coordinator"] = coordinator
2026-07-17 23:20:34 +02:00
async def stop_supervisor(ctx: dict[str, Any]) -> None:
coordinator: SyncCoordinator | None = ctx.get("coordinator")
if coordinator is not None:
await coordinator.stop()
ctx["coordinator"] = None