diff --git a/aibox_sophon_adapter/router/board_ping.py b/aibox_sophon_adapter/router/board_ping.py index 492d912..27bc378 100644 --- a/aibox_sophon_adapter/router/board_ping.py +++ b/aibox_sophon_adapter/router/board_ping.py @@ -4,7 +4,7 @@ AI Box Sophon Adapter — MQTT 心跳上报处理器 监听 MQTT 主题 /board_ping(通过 MQTT Bridge 路由到 chongming/aibox_sophon_adapter/board_ping), 解析设备心跳数据并更新数据库记录。 """ -import json +import orjson import logging from datetime import datetime @@ -89,7 +89,7 @@ async def board_ping(request: BoardPingRequest, worker_id: str = "") -> dict: return {"error": str(e)} # ---- 以下为可选能力:失败只告警,不阻断心跳 ---- - ping_data = json.loads(ping_json) + ping_data = orjson.loads(ping_json.encode("utf-8")) # RTSP 拉流(依赖 ffmpeg;缺失时跳过并在启动日志提示) medias = ping_data.get("Medias", {}) diff --git a/aibox_sophon_adapter/router/get_alarm.py b/aibox_sophon_adapter/router/get_alarm.py index 3d500de..e2bdd02 100644 --- a/aibox_sophon_adapter/router/get_alarm.py +++ b/aibox_sophon_adapter/router/get_alarm.py @@ -1,7 +1,7 @@ """ 查询单条告警详情 — GET /aibox/get_alarm?alarm_id=xxx """ -import json +import orjson import logging from chongming_worker import rpc_method @@ -34,8 +34,8 @@ async def get_alarm(alarm_id: str, worker_id: str = "") -> dict: alarm_data = {} try: - alarm_data = json.loads(record.alarm_data) if record.alarm_data else {} - except json.JSONDecodeError: + alarm_data = orjson.loads(record.alarm_data.encode("utf-8")) if record.alarm_data else {} + except orjson.JSONDecodeError: pass return { diff --git a/aibox_sophon_adapter/router/get_device.py b/aibox_sophon_adapter/router/get_device.py index 7aad058..9ec02e9 100644 --- a/aibox_sophon_adapter/router/get_device.py +++ b/aibox_sophon_adapter/router/get_device.py @@ -1,7 +1,7 @@ """ 查询单个设备详情 — GET /aibox/get_device?board_id=xxx """ -import json +import orjson import logging from datetime import datetime @@ -39,8 +39,8 @@ async def get_device(board_id: str, worker_id: str = "") -> dict: ping_data = {} try: - ping_data = json.loads(record.ping_data) if record.ping_data else {} - except json.JSONDecodeError: + ping_data = orjson.loads(record.ping_data.encode("utf-8")) if record.ping_data else {} + except orjson.JSONDecodeError: pass return { diff --git a/aibox_sophon_adapter/router/get_offline_devices.py b/aibox_sophon_adapter/router/get_offline_devices.py index 0ddfbf2..d55b8a1 100644 --- a/aibox_sophon_adapter/router/get_offline_devices.py +++ b/aibox_sophon_adapter/router/get_offline_devices.py @@ -1,7 +1,6 @@ """ 查询离线/异常设备 — GET /aibox/get_offline_devices """ -import json import logging from datetime import datetime diff --git a/aibox_sophon_adapter/router/list_alarms.py b/aibox_sophon_adapter/router/list_alarms.py index 440ed21..a9df204 100644 --- a/aibox_sophon_adapter/router/list_alarms.py +++ b/aibox_sophon_adapter/router/list_alarms.py @@ -1,7 +1,7 @@ """ 查询告警记录列表 — GET /aibox/list_alarms """ -import json +import orjson import logging from chongming_worker import rpc_method @@ -60,8 +60,8 @@ async def list_alarms( for record in records: alarm_data = {} try: - alarm_data = json.loads(record.alarm_data) if record.alarm_data else {} - except json.JSONDecodeError: + alarm_data = orjson.loads(record.alarm_data.encode("utf-8")) if record.alarm_data else {} + except orjson.JSONDecodeError: pass alarms.append({ diff --git a/aibox_sophon_adapter/router/list_devices.py b/aibox_sophon_adapter/router/list_devices.py index 374c67c..f32c9c0 100644 --- a/aibox_sophon_adapter/router/list_devices.py +++ b/aibox_sophon_adapter/router/list_devices.py @@ -1,7 +1,7 @@ """ 查询所有设备状态 — GET /aibox/list_devices """ -import json +import orjson import logging from datetime import datetime @@ -39,8 +39,8 @@ async def list_devices(worker_id: str = "") -> dict: ping_data = {} try: - ping_data = json.loads(record.ping_data) if record.ping_data else {} - except json.JSONDecodeError: + ping_data = orjson.loads(record.ping_data.encode("utf-8")) if record.ping_data else {} + except orjson.JSONDecodeError: pass devices.append({ diff --git a/aibox_sophon_adapter/routes.py b/aibox_sophon_adapter/routes.py index 44746c2..ae9e1b9 100644 --- a/aibox_sophon_adapter/routes.py +++ b/aibox_sophon_adapter/routes.py @@ -9,7 +9,7 @@ AI Box Sophon Adapter — 自定义 FastAPI 路由 路由前缀: /aibox_sophon_adapter(网关自动加 /api/v1) """ import os -import json +import orjson import uuid import hashlib import logging @@ -133,7 +133,7 @@ async def _save_alarm_record(alarm: dict) -> None: alarm_id = alarm.get("AlarmId") or alarm.get("UniqueId", "") media = alarm.get("Media", {}) media_name = media.get("MediaName", "") if isinstance(media, dict) else "" - alarm_data_str = json.dumps(alarm, ensure_ascii=False) + alarm_data_str = orjson.dumps(alarm).decode() try: async with db.get_session() as session: @@ -450,7 +450,7 @@ async def alarm_report( logger.error( f"[AlarmReport] Pydantic 验证失败:\n" f" 错误: {e.errors()}\n" - f" 请求体: {json.dumps(payload, ensure_ascii=False)[:3000]}" + f" 请求体: {orjson.dumps(payload).decode()[:3000]}" ) raise HTTPException(status_code=422, detail=e.errors()) diff --git a/auth/router/login.py b/auth/router/login.py index 844363f..08770d4 100644 --- a/auth/router/login.py +++ b/auth/router/login.py @@ -1,6 +1,6 @@ import time from datetime import datetime -import json +import orjson from sqlalchemy import select @@ -73,7 +73,7 @@ async def login(login_post_request: LoginPostRequest) -> LoginPostResponse: } token = jwt.encode( - json.dumps(payload), + orjson.dumps(payload).decode(), expires_in_seconds=10800 # 3小时有效期 )