feat: 任务离线设备自动跳过(serial/分组模式触发时过滤 STF 池离线设备,默认开启,任务编辑器可勾选关闭)
This commit is contained in:
+23
-8
@@ -146,15 +146,30 @@ class TaskJob:
|
||||
"""根据 target 解析出实际要跑的 serial 列表。"""
|
||||
mode = self.target.get("mode", "all")
|
||||
if mode == "serial":
|
||||
return [self.target["serial"]]
|
||||
if mode == "group":
|
||||
serials = [self.target["serial"]]
|
||||
elif mode == "group":
|
||||
g = manager.groups.get(self.target.get("group_name"))
|
||||
return list(g.serials) if g else []
|
||||
# all:返回所有空闲设备
|
||||
try:
|
||||
return [d["serial"] for d in manager.stf.list_free_devices()]
|
||||
except Exception:
|
||||
return []
|
||||
serials = list(g.serials) if g else []
|
||||
else:
|
||||
# all:返回所有空闲设备(天然只含在线设备)
|
||||
try:
|
||||
return [d["serial"] for d in manager.stf.list_free_devices()]
|
||||
except Exception:
|
||||
return []
|
||||
# 离线自动跳过(serial/group 模式):跳过 STF 池里不在线(present=False)的设备,
|
||||
# 避免对离线设备反复尝试占用后报"设备离线"。默认开启,可在任务编辑器取消勾选。
|
||||
if serials and self.params.get("skip_offline", True):
|
||||
try:
|
||||
online = {d["serial"] for d in manager.stf.list_all_devices()
|
||||
if d.get("present") and d.get("ready")}
|
||||
except Exception:
|
||||
online = None # STF 查询失败时不过滤,维持原行为
|
||||
if online is not None:
|
||||
skipped = [s for s in serials if s not in online]
|
||||
if skipped:
|
||||
_log.info(f"任务 {self.name} 离线自动跳过 {len(skipped)} 台设备: {skipped}")
|
||||
serials = [s for s in serials if s in online]
|
||||
return serials
|
||||
|
||||
|
||||
# ================== 前台 App 扫描器 ==================
|
||||
|
||||
Reference in New Issue
Block a user