From 4f0f19bccd807d4cee1d7ba799ab5dda5354eb40 Mon Sep 17 00:00:00 2001 From: ericwyuan Date: Thu, 20 Aug 2026 12:12:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20dispatcher/poller=20=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E5=88=86=E7=A6=BB=E6=A8=A1=E5=BC=8F=EF=BC=8C?= =?UTF-8?q?stale=5Ftimeout=20=E7=BC=A9=E7=9F=AD=E5=88=B0=2010=20=E5=88=86?= =?UTF-8?q?=E9=92=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - dispatcher 上传 timeout 从 300s 改为 (10s connect, 60s read) 避免大文件上传无限阻塞 dispatcher 线程 - poller 拉取 timeout 从 30s 改为 (10s connect, 15s read) - stale_timeout 从 3600s 缩短到 600s(10 分钟) 更快回收卡死的 PROCESSING 任务 --- fam-core/config/config.yaml | 2 +- fam-core/src/fam_core/dispatcher/dispatcher.py | 2 +- fam-core/src/fam_core/poller/poller.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fam-core/config/config.yaml b/fam-core/config/config.yaml index 7d6e7d4..141ca53 100644 --- a/fam-core/config/config.yaml +++ b/fam-core/config/config.yaml @@ -30,7 +30,7 @@ dispatcher: edge_url: "http://129.146.203.203:5000/api/edge/video/enqueue" max_retries: 3 upload_timeout: 300 # 仅视频上传时间(不含 AI 处理) - stale_timeout: 3600 # PROCESSING 超时回收(Edge 处理 + 队列等待) + stale_timeout: 600 # PROCESSING 超时回收(10分钟,Edge 处理 + 队列等待) poller: poll_interval: 30 diff --git a/fam-core/src/fam_core/dispatcher/dispatcher.py b/fam-core/src/fam_core/dispatcher/dispatcher.py index a1d90f1..dae8a2d 100644 --- a/fam-core/src/fam_core/dispatcher/dispatcher.py +++ b/fam-core/src/fam_core/dispatcher/dispatcher.py @@ -97,7 +97,7 @@ class Dispatcher: self.edge_url, data=payload, files={'video': (os.path.basename(video_path), fh, 'video/mp4')}, - timeout=self.upload_timeout + timeout=(10, 60) ) except requests.RequestException as e: logger.error(f"[task_id={task_id}] 上传失败: {e}") diff --git a/fam-core/src/fam_core/poller/poller.py b/fam-core/src/fam_core/poller/poller.py index 818567a..62cf0ca 100644 --- a/fam-core/src/fam_core/poller/poller.py +++ b/fam-core/src/fam_core/poller/poller.py @@ -75,7 +75,7 @@ class Poller: resp = requests.get( self.results_url, params={'limit': self.batch_size}, - timeout=self.timeout + timeout=(10, 15) ) except requests.RequestException as e: logger.error(f"拉取结果失败: {e}")