fix(tools): widen error isolation to cover full single-video pipeline
Codex 功能质量审查发现 _build_one 的 try/except 仅包裹 build_async, 构造器、SRT 解析、save_json、save_progress 抛异常会逃逸到 gather 中止整批。 将 try 边界扩大到覆盖完整单视频流程(构建→建树→保存→进度记录)。
This commit is contained in:
@@ -300,21 +300,21 @@ async def main_async(args: argparse.Namespace) -> None:
|
||||
async with video_sem:
|
||||
vid = video_path.stem
|
||||
logger.info("开始建树 {}", vid)
|
||||
try:
|
||||
builder = VideoTreeBuilder(vlm=vlm, llm=llm, config=tree_cfg, api_semaphore=api_sem)
|
||||
srt_entries = _find_srt_entries(video_path, srt_dir)
|
||||
try:
|
||||
index = await builder.build_async(str(video_path), srt_entries)
|
||||
tree_path = out_dir / vid / "tree.json"
|
||||
tree_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
index.save_json(str(tree_path))
|
||||
await save_progress(progress_path, progress_lock, vid)
|
||||
completed += 1
|
||||
except Exception as exc:
|
||||
# WHY: 单视频错误隔离——一个视频失败不拖垮整批;
|
||||
# 失败清单汇总上报,vid 不进 progress,下次重跑自动重建。
|
||||
logger.error("建树失败 {} ({}): {}", vid, type(exc).__name__, exc)
|
||||
failed.append(vid)
|
||||
return
|
||||
tree_path = out_dir / vid / "tree.json"
|
||||
tree_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
index.save_json(str(tree_path))
|
||||
await save_progress(progress_path, progress_lock, vid)
|
||||
completed += 1
|
||||
if completed % 5 == 0:
|
||||
elapsed = time.time() - start_time
|
||||
rate = completed / elapsed * 60 if elapsed > 0 else 0
|
||||
|
||||
Reference in New Issue
Block a user