feat: 悬空设备自愈 - 启动可选自动释放残留 STF 占用
崩溃/强杀后设备残留占用需手动清理。新增 AUTO_RELEASE_STALE_OCCUPY 配置 (默认关):单实例部署设为 true 时,web_server 启动自动释放本账户残留占用; 多实例共用 STF 账户时勿开(会误放另一实例任务)。默认仅启动提示。
This commit is contained in:
+11
-5
@@ -729,17 +729,23 @@ def _run_server(host, port):
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
from config import WEB_HOST, WEB_PORT
|
||||
from config import WEB_HOST, WEB_PORT, AUTO_RELEASE_STALE_OCCUPY
|
||||
# 自动启动 uiautodev 服务(元素抓取功能依赖,端口 20242)
|
||||
_ensure_uiauto_running()
|
||||
# 启动时提示可能残留的 STF 占用(上次异常退出/强杀遗留)。
|
||||
# 不自动释放:本机与生产可能是多实例共用一个 STF 账户,误放会中断另一实例的任务。
|
||||
# 启动时处理可能残留的 STF 占用(上次异常退出/强杀遗留)。
|
||||
# AUTO_RELEASE_STALE_OCCUPY=True(单实例)时自动释放;否则仅提示。
|
||||
# 多实例共用一个 STF 账户时不要开启,误放会中断另一实例的任务。
|
||||
try:
|
||||
_mine = stf.list_my_devices()
|
||||
if _mine:
|
||||
_serials = ", ".join(d["serial"] for d in _mine)
|
||||
_log.warning(f"启动时发现 {len(_mine)} 台设备仍被本账户占用(可能异常退出残留):{_serials}。"
|
||||
f"确认无其他实例在跑时可用\"强制释放占用\"清理")
|
||||
if AUTO_RELEASE_STALE_OCCUPY:
|
||||
_log.warning(f"启动时发现 {len(_mine)} 台设备残留占用,自动释放(AUTO_RELEASE_STALE_OCCUPY=True):{_serials}")
|
||||
_released, _failed = stf.release_all_mine()
|
||||
_log.info(f"自动释放完成:成功 {len(_released)} 台,失败 {len(_failed)} 台")
|
||||
else:
|
||||
_log.warning(f"启动时发现 {len(_mine)} 台设备仍被本账户占用(可能异常退出残留):{_serials}。"
|
||||
f"单实例无人值守可设 AUTO_RELEASE_STALE_OCCUPY=True 自动清理")
|
||||
except Exception:
|
||||
pass
|
||||
_log.info(f"管理后台: http://localhost:{WEB_PORT}/ (admin/admin123)")
|
||||
|
||||
Reference in New Issue
Block a user