Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 15 additions & 5 deletions backend/app/core/dishka_lifespan.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
from app.core.tracing import Tracer
from app.db.docs import ALL_DOCUMENTS
from app.events.handlers import notification_router, sse_router
from app.services.event_replay import EventReplayService
from app.services.notification_scheduler import NotificationScheduler
from app.settings import Settings

Expand Down Expand Up @@ -64,24 +65,33 @@ async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]:
await broker.start()
logger.info("Kafka broker started")

# Set up APScheduler for NotificationScheduler
# Set up APScheduler for NotificationScheduler and the replay session report
notification_scheduler: NotificationScheduler = await container.get(NotificationScheduler)
notification_apscheduler = AsyncIOScheduler()
notification_apscheduler.add_job(
replay_service: EventReplayService = await container.get(EventReplayService)
apscheduler = AsyncIOScheduler()
apscheduler.add_job(
notification_scheduler.process_due_notifications,
trigger="interval",
seconds=15,
id="process_due_notifications",
max_instances=1,
misfire_grace_time=60,
)
notification_apscheduler.start()
apscheduler.add_job(
replay_service.report_sessions,
trigger="interval",
seconds=10,
id="report_replay_sessions",
max_instances=1,
misfire_grace_time=30,
)
apscheduler.start()
logger.info("NotificationScheduler started (APScheduler interval=15s)")

try:
yield
finally:
notification_apscheduler.shutdown(wait=False)
apscheduler.shutdown(wait=False)
logger.info("NotificationScheduler stopped")
await broker.stop()
logger.info("Kafka broker stopped")
Expand Down
2 changes: 0 additions & 2 deletions backend/app/core/metrics/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
from app.core.metrics.database import IdempotencyMetrics
from app.core.metrics.events import EventMetrics
from app.core.metrics.rate_limit import RateLimitMetrics
from app.core.metrics.replay import ReplayMetrics
from app.core.metrics.security import SecurityMetrics

__all__ = [
Expand All @@ -12,7 +11,6 @@
"IdempotencyMetrics",
"EventMetrics",
"RateLimitMetrics",
"ReplayMetrics",
"SecurityMetrics",
"setup_metrics",
]
130 changes: 0 additions & 130 deletions backend/app/core/metrics/replay.py

This file was deleted.

9 changes: 2 additions & 7 deletions backend/app/core/providers.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
EventMetrics,
IdempotencyMetrics,
RateLimitMetrics,
ReplayMetrics,
SecurityMetrics,
)
from app.core.security import SecurityService
Expand Down Expand Up @@ -266,10 +265,6 @@ def get_rate_limit_metrics(self, settings: Settings) -> RateLimitMetrics:
def get_idempotency_metrics(self, settings: Settings) -> IdempotencyMetrics:
return IdempotencyMetrics(settings)

@provide
def get_replay_metrics(self, settings: Settings) -> ReplayMetrics:
return ReplayMetrics(settings)

@provide
def get_security_metrics(self, settings: Settings) -> SecurityMetrics:
return SecurityMetrics(settings)
Expand Down Expand Up @@ -708,14 +703,14 @@ def get_event_replay_service(
self,
replay_repository: ReplayRepository,
kafka_producer: UnifiedProducer,
replay_metrics: ReplayMetrics,
tracer: trace.Tracer,
logger: structlog.stdlib.BoundLogger,
sse_bus: SSERedisBus,
) -> EventReplayService:
return EventReplayService(
repository=replay_repository,
producer=kafka_producer,
replay_metrics=replay_metrics,
tracer=tracer,
logger=logger,
sse_bus=sse_bus,
)
Loading
Loading