From 1a74372ad944c8a5d78afa8210aa6e2a4a8304f1 Mon Sep 17 00:00:00 2001 From: butubb <1422726308@qq.com> Date: Tue, 1 Sep 2026 09:07:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BB=BB=E5=8A=A1=E8=B0=83=E5=BA=A6?= =?UTF-8?q?=E9=99=90=E5=AE=9A=E8=AE=BE=E5=A4=87=E6=B1=A0=E2=80=94=E2=80=94?= =?UTF-8?q?preempt=20=E6=8A=A2=E5=8D=A0=E6=A8=A1=E5=BC=8F=E7=9A=84=20all?= =?UTF-8?q?=20=E7=9B=AE=E6=A0=87=E5=8E=9F=E7=94=A8=20list=5Fonline()?= =?UTF-8?q?=EF=BC=88=E5=90=AB=E5=BE=85=E8=BF=9E=E6=8E=A5/=E6=9C=AA?= =?UTF-8?q?=E5=85=A5=E6=B1=A0=E8=AE=BE=E5=A4=87=EF=BC=8C=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8F=91=E7=8E=B0=E9=AA=8C=E8=AF=81=E8=BF=9E=E4=B8=8A=E7=9A=84?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E4=BC=9A=E8=A2=AB=E4=BB=BB=E5=8A=A1=E8=AF=AF?= =?UTF-8?q?=E8=B7=91=EF=BC=89=EF=BC=9B=E6=94=B9=E4=B8=BA=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E6=B1=A0=E5=86=85=E5=9C=A8=E7=BA=BF=E8=AE=BE=E5=A4=87=EF=BC=9B?= =?UTF-8?q?group=20=E6=A8=A1=E5=BC=8F=E5=90=8C=E6=A0=B7=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E6=9C=AA=E5=85=A5=E6=B1=A0=E8=AE=BE=E5=A4=87=EF=BC=88serial=20?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E4=BF=9D=E7=95=99=E6=98=BE=E5=BC=8F=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/task_manager.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/core/task_manager.py b/core/task_manager.py index 7546465..21f8660 100644 --- a/core/task_manager.py +++ b/core/task_manager.py @@ -154,12 +154,24 @@ class TaskJob: elif mode == "group": g = manager.groups.get(self.target.get("group_name")) serials = list(g.serials) if g else [] + # 分组应引用设备池内设备:不在池内的(如手动填的旧 IP)不参与调度, + # 与 all/preempt 模式口径一致(2026-09-01) + try: + configured = set(device_pool.list_configured()) + serials = [s for s in serials if s in configured] + except Exception: + pass else: # all:默认返回池内在线设备(单实例互斥由 _run_with_retry 的 _running 保证); # 抢占模式返回全部在线设备(含运行中,执行时抢占) if self.params.get("preempt"): try: - return device_pool.list_online() + # 抢占模式:只抢设备池内的在线设备—— + # list_online() 会包含待连接/未入池设备(如自动发现验证时连上的), + # 它们不在设备池就不该被任务调度(2026-09-01 修复) + online = set(device_pool.list_online()) + configured = set(device_pool.list_configured()) + return [s for s in device_pool.list_online() if s in configured] except Exception: return [] try: