core.container.sse¶
src.core.container.sse
¶
SSE dependency factories.
Application-scoped singletons and request-scoped factories for SSE: - get_sse_publisher(): App-scoped singleton for publishing SSE events - get_sse_subscriber(): Request-scoped factory for SSE stream subscriptions
Reference
- docs/architecture/sse-architecture.md (Section 6)
Classes¶
Functions¶
get_sse_publisher
cached
¶
Get SSE publisher singleton (app-scoped).
Returns RedisSSEPublisher with shared Redis connection pool. Uses same Redis connection as cache for efficiency.
Returns:
| Type | Description |
|---|---|
SSEPublisherProtocol
|
SSE publisher implementing SSEPublisherProtocol. |
Usage
Application Layer (direct use in handlers)¶
publisher = get_sse_publisher() await publisher.publish(event)
Infrastructure Layer (event handler wiring)¶
sse_handler = SSEEventHandler(publisher=get_sse_publisher())
Source code in src/core/container/sse.py
get_sse_subscriber
¶
Get SSE subscriber (request-scoped).
Returns new RedisSSESubscriber instance for each SSE connection. Each subscriber manages its own pub/sub subscription lifecycle.
Returns:
| Type | Description |
|---|---|
RedisSSESubscriber
|
New RedisSSESubscriber instance. |
Note
NOT a singleton - each SSE connection gets its own subscriber. This is intentional: pub/sub subscriptions are per-connection.
Usage
Presentation Layer (FastAPI Depends in SSE endpoint)¶
subscriber = get_sse_subscriber() async for event in subscriber.subscribe(user_id): yield event.to_sse_format()