modify: 性能优化

This commit is contained in:
2026-08-23 04:34:38 +08:00
parent 51aa93eefb
commit 5ab68d6002
8 changed files with 19 additions and 20 deletions
+2 -2
View File
@@ -4,7 +4,7 @@ AI Box Sophon Adapter — MQTT 心跳上报处理器
监听 MQTT 主题 /board_ping(通过 MQTT Bridge 路由到 chongming/aibox_sophon_adapter/board_ping), 监听 MQTT 主题 /board_ping(通过 MQTT Bridge 路由到 chongming/aibox_sophon_adapter/board_ping),
解析设备心跳数据并更新数据库记录。 解析设备心跳数据并更新数据库记录。
""" """
import json import orjson
import logging import logging
from datetime import datetime from datetime import datetime
@@ -89,7 +89,7 @@ async def board_ping(request: BoardPingRequest, worker_id: str = "") -> dict:
return {"error": str(e)} return {"error": str(e)}
# ---- 以下为可选能力:失败只告警,不阻断心跳 ---- # ---- 以下为可选能力:失败只告警,不阻断心跳 ----
ping_data = json.loads(ping_json) ping_data = orjson.loads(ping_json.encode("utf-8"))
# RTSP 拉流(依赖 ffmpeg;缺失时跳过并在启动日志提示) # RTSP 拉流(依赖 ffmpeg;缺失时跳过并在启动日志提示)
medias = ping_data.get("Medias", {}) medias = ping_data.get("Medias", {})
+3 -3
View File
@@ -1,7 +1,7 @@
""" """
查询单条告警详情 — GET /aibox/get_alarm?alarm_id=xxx 查询单条告警详情 — GET /aibox/get_alarm?alarm_id=xxx
""" """
import json import orjson
import logging import logging
from chongming_worker import rpc_method from chongming_worker import rpc_method
@@ -34,8 +34,8 @@ async def get_alarm(alarm_id: str, worker_id: str = "") -> dict:
alarm_data = {} alarm_data = {}
try: try:
alarm_data = json.loads(record.alarm_data) if record.alarm_data else {} alarm_data = orjson.loads(record.alarm_data.encode("utf-8")) if record.alarm_data else {}
except json.JSONDecodeError: except orjson.JSONDecodeError:
pass pass
return { return {
+3 -3
View File
@@ -1,7 +1,7 @@
""" """
查询单个设备详情 — GET /aibox/get_device?board_id=xxx 查询单个设备详情 — GET /aibox/get_device?board_id=xxx
""" """
import json import orjson
import logging import logging
from datetime import datetime from datetime import datetime
@@ -39,8 +39,8 @@ async def get_device(board_id: str, worker_id: str = "") -> dict:
ping_data = {} ping_data = {}
try: try:
ping_data = json.loads(record.ping_data) if record.ping_data else {} ping_data = orjson.loads(record.ping_data.encode("utf-8")) if record.ping_data else {}
except json.JSONDecodeError: except orjson.JSONDecodeError:
pass pass
return { return {
@@ -1,7 +1,6 @@
""" """
查询离线/异常设备 — GET /aibox/get_offline_devices 查询离线/异常设备 — GET /aibox/get_offline_devices
""" """
import json
import logging import logging
from datetime import datetime from datetime import datetime
+3 -3
View File
@@ -1,7 +1,7 @@
""" """
查询告警记录列表 — GET /aibox/list_alarms 查询告警记录列表 — GET /aibox/list_alarms
""" """
import json import orjson
import logging import logging
from chongming_worker import rpc_method from chongming_worker import rpc_method
@@ -60,8 +60,8 @@ async def list_alarms(
for record in records: for record in records:
alarm_data = {} alarm_data = {}
try: try:
alarm_data = json.loads(record.alarm_data) if record.alarm_data else {} alarm_data = orjson.loads(record.alarm_data.encode("utf-8")) if record.alarm_data else {}
except json.JSONDecodeError: except orjson.JSONDecodeError:
pass pass
alarms.append({ alarms.append({
+3 -3
View File
@@ -1,7 +1,7 @@
""" """
查询所有设备状态 — GET /aibox/list_devices 查询所有设备状态 — GET /aibox/list_devices
""" """
import json import orjson
import logging import logging
from datetime import datetime from datetime import datetime
@@ -39,8 +39,8 @@ async def list_devices(worker_id: str = "") -> dict:
ping_data = {} ping_data = {}
try: try:
ping_data = json.loads(record.ping_data) if record.ping_data else {} ping_data = orjson.loads(record.ping_data.encode("utf-8")) if record.ping_data else {}
except json.JSONDecodeError: except orjson.JSONDecodeError:
pass pass
devices.append({ devices.append({
+3 -3
View File
@@ -9,7 +9,7 @@ AI Box Sophon Adapter — 自定义 FastAPI 路由
路由前缀: /aibox_sophon_adapter(网关自动加 /api/v1) 路由前缀: /aibox_sophon_adapter(网关自动加 /api/v1)
""" """
import os import os
import json import orjson
import uuid import uuid
import hashlib import hashlib
import logging import logging
@@ -133,7 +133,7 @@ async def _save_alarm_record(alarm: dict) -> None:
alarm_id = alarm.get("AlarmId") or alarm.get("UniqueId", "") alarm_id = alarm.get("AlarmId") or alarm.get("UniqueId", "")
media = alarm.get("Media", {}) media = alarm.get("Media", {})
media_name = media.get("MediaName", "") if isinstance(media, dict) else "" 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: try:
async with db.get_session() as session: async with db.get_session() as session:
@@ -450,7 +450,7 @@ async def alarm_report(
logger.error( logger.error(
f"[AlarmReport] Pydantic 验证失败:\n" f"[AlarmReport] Pydantic 验证失败:\n"
f" 错误: {e.errors()}\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()) raise HTTPException(status_code=422, detail=e.errors())
+2 -2
View File
@@ -1,6 +1,6 @@
import time import time
from datetime import datetime from datetime import datetime
import json import orjson
from sqlalchemy import select from sqlalchemy import select
@@ -73,7 +73,7 @@ async def login(login_post_request: LoginPostRequest) -> LoginPostResponse:
} }
token = jwt.encode( token = jwt.encode(
json.dumps(payload), orjson.dumps(payload).decode(),
expires_in_seconds=10800 # 3小时有效期 expires_in_seconds=10800 # 3小时有效期
) )