Server-Sent Events (SSE) stream for real-time job progress.
Source: web/backend/routers/events.py
GET /api/jobs/{job_id}/eventsOpens an SSE connection that streams progress events for a job.
Event types:
| Event | Data | Description |
|---|---|---|
progress |
ProgressEvent JSON (Schemas) |
Periodic progress update |
done |
ProgressEvent JSON | Terminal status (closes connection) |
ping |
"" |
Keepalive (every ~15s) |
Process:
job:{job_id}:progresscompleted or failed), yield done event and closeConnection lifecycle:
Browser opens SSE
│
├── receives: event: progress, data: {...}
├── receives: event: progress, data: {...}
├── receives: event: ping
├── receives: event: progress, data: {...}
└── receives: event: done, data: {...}
└── connection closed
Events Router
├── sse-starlette (SSE response)
├── Redis (pubsub subscription)
├── Web Config (REDIS_URL)
└──▶ fed by Progress Reporter (publishes to Redis)