Adding the new rewrite
This commit is contained in:
1 parent
4aca9f08d1
commit
9b48b01d1d
62 files changed
+4510
-1406
No files matched your search
@@ -0,0 +1,41 @@
|
||||
"""Server-Sent Events stream with snapshots + fleet overview."""
|
||||
import asyncio
|
||||
|
||||
import orjson
|
||||
from fastapi import APIRouter, Depends
|
||||
from fastapi.responses import StreamingResponse
|
||||
|
||||
from ..auth import require_session
|
||||
from ..config import load_config
|
||||
from ..config_manager import get_config_version
|
||||
from ..storage import get_latest, get_redis
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/api/stream")
|
||||
async def stream(user=Depends(require_session)):
|
||||
async def event_gen():
|
||||
while True:
|
||||
cfg = load_config()
|
||||
r = get_redis()
|
||||
payload = {"snapshots": {}, "cfgVersion": get_config_version()}
|
||||
for u in cfg.ups:
|
||||
snap = await get_latest(u.name)
|
||||
if snap:
|
||||
payload["snapshots"][u.name] = snap
|
||||
payload["upsMeta"] = [
|
||||
{
|
||||
"name": u.name,
|
||||
"host": u.host,
|
||||
"port": u.port,
|
||||
"offline": bool(r.get(f"ups:health:offline:{u.name}")),
|
||||
}
|
||||
for u in cfg.ups
|
||||
]
|
||||
for name, snap in payload["snapshots"].items():
|
||||
payload.setdefault(name, snap)
|
||||
yield f"data: {orjson.dumps(payload).decode()}\n\n"
|
||||
await asyncio.sleep(5)
|
||||
|
||||
return StreamingResponse(event_gen(), media_type="text/event-stream")
|
||||
Reference in new issue
Block a user