添加最大设备数量限制。优化确认设备离线时间为3秒。
This commit is contained in:
@@ -20,7 +20,7 @@ class DeviceInfo:
|
|||||||
_instance_lock = threading.Lock()
|
_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):
|
def __new__(cls, *args, **kwargs):
|
||||||
if not cls._instance:
|
if not cls._instance:
|
||||||
@@ -62,6 +62,9 @@ class DeviceInfo:
|
|||||||
print("[Init] DeviceInfo 初始化完成")
|
print("[Init] DeviceInfo 初始化完成")
|
||||||
self._initialized = True
|
self._initialized = True
|
||||||
|
|
||||||
|
# ==========================
|
||||||
|
# 主循环
|
||||||
|
# ==========================
|
||||||
# ==========================
|
# ==========================
|
||||||
# 主循环
|
# 主循环
|
||||||
# ==========================
|
# ==========================
|
||||||
@@ -84,13 +87,21 @@ class DeviceInfo:
|
|||||||
# 当前已知的设备(本轮循环开始时)
|
# 当前已知的设备(本轮循环开始时)
|
||||||
with self._lock:
|
with self._lock:
|
||||||
known = set(self._models.keys())
|
known = set(self._models.keys())
|
||||||
|
# 当前已经维护的设备数量
|
||||||
|
current_count = len(self._models)
|
||||||
|
|
||||||
# 1. 处理在线设备
|
# 1. 处理在线设备
|
||||||
for udid in online:
|
for udid in online:
|
||||||
# 更新心跳时间
|
# 更新心跳时间(只要在 online 里,都记一笔,方便离线判断)
|
||||||
self._last_seen[udid] = now
|
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:
|
if udid in known:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -107,9 +118,18 @@ class DeviceInfo:
|
|||||||
print(f"[Add] 检测设备 {udid} 信任状态异常: {e}")
|
print(f"[Add] 检测设备 {udid} 信任状态异常: {e}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# 再次确认一下数量(极端情况下,多线程同时改 models 的话更稳妥一点)
|
||||||
|
with self._lock:
|
||||||
|
if len(self._models) >= 6:
|
||||||
|
print(f"[Add] 二次检查: 设备数量已达 6 台,忽略新设备: {udid}")
|
||||||
|
LogManager.info(f"[Add] 二次检查数量上限,忽略新设备", udid=udid)
|
||||||
|
continue
|
||||||
|
|
||||||
# 确认“已信任”的新设备,才真正走 _add_device
|
# 确认“已信任”的新设备,才真正走 _add_device
|
||||||
try:
|
try:
|
||||||
self._add_device(udid)
|
self._add_device(udid)
|
||||||
|
# 本轮循环内的计数也 +1,防止这一轮里连续加超过 6 台
|
||||||
|
current_count += 1
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# 单设备异常不能干掉整个循环
|
# 单设备异常不能干掉整个循环
|
||||||
LogManager.warning(f"[Add] 处理设备 {udid} 异常: {e}", udid=udid)
|
LogManager.warning(f"[Add] 处理设备 {udid} 异常: {e}", udid=udid)
|
||||||
|
|||||||
Reference in New Issue
Block a user