添加最大设备数量限制。优化确认设备离线时间为3秒。
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user