修复:区域名称缓存加 5 分钟 TTL,改名后自动生效
This commit is contained in:
@@ -292,17 +292,20 @@ def _get_notify_persons(camera_id: str, alarm_level: int) -> tuple:
|
||||
db.close()
|
||||
|
||||
|
||||
# 区域名称缓存(area_id → area_name),避免重复查询
|
||||
_area_name_cache: Dict[int, str] = {}
|
||||
# 区域名称缓存(area_id → (area_name, expire_time)),5 分钟 TTL
|
||||
_area_name_cache: Dict[int, tuple] = {}
|
||||
_iot_token_cache: Dict[str, str] = {"token": "", "expire": 0}
|
||||
|
||||
_AREA_CACHE_TTL = 300 # 5 分钟
|
||||
|
||||
|
||||
async def _get_area_name_from_iot(area_id: int) -> str:
|
||||
"""从 IoT 平台查询区域名称(带缓存)"""
|
||||
"""从 IoT 平台查询区域名称(带 TTL 缓存)"""
|
||||
if not area_id:
|
||||
return ""
|
||||
if area_id in _area_name_cache:
|
||||
return _area_name_cache[area_id]
|
||||
cached = _area_name_cache.get(area_id)
|
||||
if cached and cached[1] > __import__('time').time():
|
||||
return cached[0]
|
||||
try:
|
||||
import httpx
|
||||
import time
|
||||
@@ -338,7 +341,7 @@ async def _get_area_name_from_iot(area_id: int) -> str:
|
||||
if data.get("code") == 0 and data.get("data"):
|
||||
name = data["data"].get("areaName", "")
|
||||
if name:
|
||||
_area_name_cache[area_id] = name
|
||||
_area_name_cache[area_id] = (name, __import__('time').time() + _AREA_CACHE_TTL)
|
||||
return name
|
||||
except Exception as e:
|
||||
logger.warning(f"查询IoT平台区域名失败: area_id={area_id}, error={e}")
|
||||
|
||||
Reference in New Issue
Block a user