fix: 直接上传multipart超时 — connect timeout 10s→120s
requests/urllib3 发送 multipart body 期间 socket timeout 取的是 connect timeout 值而非 read timeout,跨境 1.4MB/s 下 17MB 视频需 ~117s,原 10s 上限导致 100% 超时重试耗尽标记 FAILED。实测 task 50/51 修复后直接上传成功。
This commit is contained in:
@@ -275,7 +275,12 @@ class Dispatcher:
|
|||||||
self._dispatch_direct(task, payload, upload_path)
|
self._dispatch_direct(task, payload, upload_path)
|
||||||
|
|
||||||
def _dispatch_direct(self, task, payload, video_path):
|
def _dispatch_direct(self, task, payload, video_path):
|
||||||
"""小文件直接上传至 /enqueue"""
|
"""小文件直接上传至 /enqueue
|
||||||
|
|
||||||
|
注意 timeout 第一参数: urllib3 发送 multipart body 期间 socket
|
||||||
|
timeout 取的是 connect timeout 值(实测传 60s 则 60s 整超时),
|
||||||
|
而非 read timeout——跨境 1.4MB/s 下 17MB 需 ~12s,必须给足。
|
||||||
|
"""
|
||||||
task_id = task['task_id']
|
task_id = task['task_id']
|
||||||
try:
|
try:
|
||||||
with open(video_path, 'rb') as fh:
|
with open(video_path, 'rb') as fh:
|
||||||
@@ -283,7 +288,7 @@ class Dispatcher:
|
|||||||
self.edge_url,
|
self.edge_url,
|
||||||
data=payload,
|
data=payload,
|
||||||
files={'video': (os.path.basename(video_path), fh, 'video/mp4')},
|
files={'video': (os.path.basename(video_path), fh, 'video/mp4')},
|
||||||
timeout=(10, 300)
|
timeout=(120, 300)
|
||||||
)
|
)
|
||||||
except requests.RequestException as e:
|
except requests.RequestException as e:
|
||||||
logger.error(f"[task_id={task_id}] 上传失败: {e}")
|
logger.error(f"[task_id={task_id}] 上传失败: {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user