From 0111734e9ce40305f9fb4fd8f9d6b0c5ebd4f244 Mon Sep 17 00:00:00 2001 From: Misaka_Company Date: Fri, 24 Jul 2026 12:22:22 +0800 Subject: [PATCH] fix(anneng): bound CDP websocket recv with 15s socket timeout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit websocket.create_connection had no timeout, so a hung Runtime.evaluate (Electron business tab not replying) blocked ws.recv() indefinitely — the export-poll's 300s deadline and with_retry could never fire (observed as a ~22min hang on an 安能 expected download). A 15s socket timeout lets recv raise WebSocketTimeoutException so wait_until/with_retry can fail and retry. Co-Authored-By: Claude --- inbound_verify/sites/anneng.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/inbound_verify/sites/anneng.py b/inbound_verify/sites/anneng.py index a2e3a6b..4475acc 100644 --- a/inbound_verify/sites/anneng.py +++ b/inbound_verify/sites/anneng.py @@ -112,7 +112,10 @@ class CDP: """绑定到单个页面目标的同步 CDP 客户端。""" def __init__(self, ws_url): - self.ws = websocket.create_connection(ws_url) + # socket 级超时:Electron 业务 tab 偶发不回包时,recv 最多卡 15s 即抛 + # WebSocketTimeoutException,让上层 wait_until/with_retry 能失败→重试, + # 而不是无限阻塞(曾导致安能下载卡死 ~22 分钟、轮询 300s 截止也无法触发)。 + self.ws = websocket.create_connection(ws_url, timeout=15) self._id = 0 self.call("Runtime.enable")