阶段3: 摘除 STF——删除 stf_client/stf_device_mgmt 与全部引用(STF 容器重启/设备管理/强制释放占用/agent 按钮/占用列),调度与设备管理完全基于本地设备池+adb;错误类迁入 device_worker,create_worker 去 stf 参数

This commit is contained in:
2026-08-18 08:08:32 +08:00
parent 98244d8161
commit a5ce57b6fd
17 changed files with 71 additions and 956 deletions
+6 -8
View File
@@ -31,9 +31,9 @@ from config import DATA_DIR
from core.logger import get_logger
from core.models import db, DeviceGroup as GroupRow, TaskJob as JobRow
from core import device_pool
from .stf_client import STFClient, DeviceOfflineError
from .adb_helper import get_foreground_app, get_foreground_app_remote
from .device_worker import (
DeviceOfflineError,
get_all_worker_status, _update_status, _remove_worker,
_WORKERS, _WORKERS_LOCK,
start_watchdog, stop_watchdog,
@@ -195,9 +195,9 @@ class _ForegroundScanner:
策略(按设备状态区分获取逻辑):
- worker 运行中设备:用已有 remote_adb_url 直接查询(已有 adb 连接,无额外开销)
- 空闲设备:直接 adb connect <serial> → 查询 → adb disconnect(绕过 STF,不打扰设备)
- 被别人占用的设备:标记 "他人占用"
- STF occupy/release 会打扰设备(可能退回桌面),绝不使用
- USB 运行中设备:经远程 adb server(220)查询
- 空闲设备:不主动连接(返回"空闲")——IP:5555 的 adb transport 与 220
共享,外部 connect/disconnect 会扰动共享连接
serial 格式为 IP:5555(设备本身的 adb 网络地址),可直接 adb connect。
adb connect/disconnect 只建立/断开调试连接,不影响设备 UI。
@@ -334,8 +334,7 @@ class _ForegroundScanner:
# ================== 任务管理器 ==================
class TaskManager:
def __init__(self, stf_client=None, app=None):
self.stf = stf_client or STFClient()
def __init__(self, app=None):
self.app = app # Flask app,用于 db context
self.scheduler = BackgroundScheduler(timezone="Asia/Shanghai")
self.scheduler.start()
@@ -683,7 +682,7 @@ class TaskManager:
worker = None
try:
worker = task.create_worker(self.stf, serial, job.params)
worker = task.create_worker(serial, job.params)
with self._lock:
self._running[serial]["worker"] = worker
_log.info(f"{serial} 开始任务 {job.name} (第{attempt}/{max_attempts}次)")
@@ -850,7 +849,6 @@ class TaskManager:
"device_name": names.get(serial, ""),
"present": is_online,
"ready": is_online, # 阶段 1:ready 概念并入在线状态
"stf_occupied": False, # 阶段 1:已无 STF 占用(阶段 3 删字段)
"owner": "",
"worker_status": w.get("status", "idle"),
"foreground_app": self._fg_scanner.get(serial),