Files
bakery-ia/shared/leader_election/__init__.py

34 lines
953 B
Python
Raw Normal View History

2026-01-21 17:17:16 +01:00
"""
Shared Leader Election for Bakery-IA platform
Provides Redis-based leader election for services that need to run
singleton scheduled tasks (APScheduler, background jobs, etc.)
Usage:
from shared.leader_election import LeaderElectionService, SchedulerLeaderMixin
# Option 1: Direct usage
leader_election = LeaderElectionService(redis_client, "my-service")
await leader_election.start(
on_become_leader=start_scheduler,
on_lose_leader=stop_scheduler
)
# Option 2: Mixin for services with APScheduler
class MySchedulerService(SchedulerLeaderMixin):
async def _create_scheduler_jobs(self):
self.scheduler.add_job(...)
"""
from shared.leader_election.service import (
LeaderElectionService,
LeaderElectionConfig,
)
from shared.leader_election.mixin import SchedulerLeaderMixin
__all__ = [
"LeaderElectionService",
"LeaderElectionConfig",
"SchedulerLeaderMixin",
]