添加最大设备数量限制。优化确认设备离线时间为3秒。

This commit is contained in:
2025-11-27 15:40:33 +08:00
parent 68b985115e
commit 746314f0ff

View File

@@ -20,7 +20,7 @@ class DeviceInfo:
_instance_lock = threading.Lock()
# 离线宽限期
REMOVE_GRACE_SEC = float(os.getenv("REMOVE_GRACE_SEC", "6.0"))
REMOVE_GRACE_SEC = 3.0
def __new__(cls, *args, **kwargs):
if not cls._instance:
@@ -62,6 +62,9 @@ class DeviceInfo:
print("[Init] DeviceInfo 初始化完成")
self._initialized = True
# ==========================
# 主循环
# ==========================
# ==========================
# 主循环
# ==========================
@@ -84,13 +87,21 @@ class DeviceInfo:
# 当前已知的设备(本轮循环开始时)
with self._lock:
known = set(self._models.keys())
# 当前已经维护的设备数量
current_count = len(self._models)
# 1. 处理在线设备
for udid in online:
# 更新心跳时间
# 更新心跳时间(只要在 online 里,都记一笔,方便离线判断)
self._last_seen[udid] = now
# 已经在列表里的设备,直接跳过“是否信任”检查
# 如果是新设备并且数量已经 >= 6直接忽略
if udid not in known and current_count >= 6:
print(f"[Add] 设备数量已达 6 台,忽略新设备: {udid}")
LogManager.info(f"[Add] 设备数量已达上限(6),忽略新设备", udid=udid)
continue
# 已经在列表里的设备,直接跳过“是否信任”检查和添加流程
if udid in known:
continue
@@ -107,9 +118,18 @@ class DeviceInfo:
print(f"[Add] 检测设备 {udid} 信任状态异常: {e}")
continue
# 再次确认一下数量(极端情况下,多线程同时改 models 的话更稳妥一点)
with self._lock:
if len(self._models) >= 6:
print(f"[Add] 二次检查: 设备数量已达 6 台,忽略新设备: {udid}")
LogManager.info(f"[Add] 二次检查数量上限,忽略新设备", udid=udid)
continue
# 确认“已信任”的新设备,才真正走 _add_device
try:
self._add_device(udid)
# 本轮循环内的计数也 +1防止这一轮里连续加超过 6 台
current_count += 1
except Exception as e:
# 单设备异常不能干掉整个循环
LogManager.warning(f"[Add] 处理设备 {udid} 异常: {e}", udid=udid)