GET /v1/events/stream — Server-Sent Events for live dashboard updates.
(request: Request)
| 3760 | return JSONResponse(visible_records) |
| 3761 | |
| 3762 | async def handle_events_stream(request: Request) -> Response: |
| 3763 | """GET /v1/events/stream — Server-Sent Events for live dashboard updates.""" |
| 3764 | denied = _admin_auth_failure(request) |
| 3765 | if denied is not None: |
| 3766 | return denied |
| 3767 | |
| 3768 | bus = get_bus() |
| 3769 | queue = await bus.subscribe() |
| 3770 | |
| 3771 | async def _gen() -> AsyncGenerator[bytes, None]: |
| 3772 | yield b": connected\n\n" |
| 3773 | try: |
| 3774 | while True: |
| 3775 | if await request.is_disconnected(): |
| 3776 | break |
| 3777 | try: |
| 3778 | event = await asyncio.wait_for(queue.get(), timeout=15.0) |
| 3779 | payload = json.dumps(event, default=str) |
| 3780 | yield f"data: {payload}\n\n".encode("utf-8") |
| 3781 | except asyncio.TimeoutError: |
| 3782 | yield b": keepalive\n\n" |
| 3783 | finally: |
| 3784 | await bus.unsubscribe(queue) |
| 3785 | |
| 3786 | return StreamingResponse( |
| 3787 | _gen(), |
| 3788 | media_type="text/event-stream", |
| 3789 | headers={ |
| 3790 | "Cache-Control": "no-cache", |
| 3791 | "X-Accel-Buffering": "no", |
| 3792 | "Connection": "keep-alive", |
| 3793 | }, |
| 3794 | ) |
| 3795 | |
| 3796 | async def handle_traces(request: Request) -> JSONResponse: |
| 3797 | denied = _admin_auth_failure(request) |
nothing calls this directly
no test coverage detected