modify: 性能优化
This commit is contained in:
@@ -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", {})
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
"""
|
||||
查询离线/异常设备 — GET /aibox/get_offline_devices
|
||||
"""
|
||||
import json
|
||||
import logging
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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({
|
||||
|
||||
@@ -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())
|
||||
|
||||
|
||||
@@ -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小时有效期
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user