perf(chain): review 节点并行扇出五审——复用主图 add-only 记账并发范式(CR-M3-6)

This commit is contained in:
Yaojia Wang
2026-07-08 13:08:19 +02:00
parent ec91c8fdf7
commit 6a739cad5e
2 changed files with 144 additions and 2 deletions

View File

@@ -10,6 +10,7 @@ checkpoint 只存控制流,正文/审稿落领域表——resume 时重读领
from __future__ import annotations
import asyncio
import uuid
from collections.abc import Awaitable, Callable, Sequence
from contextlib import AbstractAsyncContextManager
@@ -210,9 +211,15 @@ async def review_chapter(
"user_id": user_id,
"review_context": review_context,
}
# 并行扇出五审(复用主图 write→review 的 add-only 记账并发范式T3.8):各 run_review
# 共用本节点 session 的网关,其 SqlAlchemyLedgerSink.record 只 add同步、不 flush
# 共享 session 并发安全run_review 自带失败隔离(不抛、返回 incomplete 占位gather
# 无需 return_exceptions。collect_reviews 在 gather 之后**一次**落库(不引入新并发写)。
parts = await asyncio.gather(
*(run_review(spec, review_state, gateway=gateway) for spec in review_specs)
)
reviews: dict[str, Any] = {}
for spec in review_specs:
part = await run_review(spec, review_state, gateway=gateway)
for part in parts:
reviews.update(part.get("reviews", {}))
review_state["reviews"] = reviews
review_repo = review_repo_factory(session)