improved logging

This commit is contained in:
Ayzen
2026-06-06 00:52:52 +03:00
parent af6005d68f
commit aea49f6128
65 changed files with 1206 additions and 240 deletions
+10 -1
View File
@@ -10,12 +10,15 @@ from __future__ import annotations
import asyncio
import contextlib
import logging
from fastapi import APIRouter, Body, HTTPException, Request, WebSocket, WebSocketDisconnect
from python_app.webui.controller import WebController
from python_app.webui.streaming import RingBroadcaster
logger = logging.getLogger(__name__)
router = APIRouter()
@@ -30,6 +33,7 @@ async def get_status(request: Request) -> dict:
@router.post("/api/start")
async def post_start(request: Request) -> dict:
logger.info("Web UI request: start")
controller = _controller(request)
controller.start()
return controller.status()
@@ -37,6 +41,7 @@ async def post_start(request: Request) -> dict:
@router.post("/api/single_capture")
async def post_single_capture(request: Request) -> dict:
logger.info("Web UI request: single capture")
controller = _controller(request)
controller.single_capture()
return controller.status()
@@ -44,6 +49,7 @@ async def post_single_capture(request: Request) -> dict:
@router.post("/api/stop")
async def post_stop(request: Request) -> dict:
logger.info("Web UI request: stop")
controller = _controller(request)
controller.stop()
return controller.status()
@@ -51,6 +57,7 @@ async def post_stop(request: Request) -> dict:
@router.post("/api/tmp_reference")
async def post_tmp_reference(request: Request) -> dict:
logger.info("Web UI request: capture temporary reference")
controller = _controller(request)
controller.capture_tmp_reference()
return controller.status()
@@ -66,6 +73,7 @@ async def post_live_settings(request: Request, fields: dict = Body(default={}))
try:
return _controller(request).apply_live_settings(fields)
except ValueError as exc:
logger.warning("Web UI rejected live settings update: %s", exc)
raise HTTPException(status_code=400, detail=str(exc)) from exc
@@ -76,11 +84,12 @@ async def ws(websocket: WebSocket) -> None:
broadcaster: RingBroadcaster = websocket.app.state.broadcaster
queue: asyncio.Queue[dict] = asyncio.Queue(maxsize=1)
broadcaster.register(queue)
logger.info("Web UI client connected")
try:
while True:
await websocket.send_json(await queue.get())
except WebSocketDisconnect:
pass
logger.info("Web UI client disconnected")
finally:
broadcaster.unregister(queue)
with contextlib.suppress(Exception):