# LangGraph Send 并行任务：三个检查乱序完成，仍按服务ID汇总结果

LangGraph真实Send并发请求三个本机端点，乱序完成后按稳定ID归并，保留503并拒绝重复ID；无LLM调用。

## 环境

- Python 3.12+；在 reference 中 pip install -r requirements.txt。

## 启动

~~~sh
cd reference
python3 verify.py
# 运行后查看原生结果阅读器（读取records.json）
python3 -m http.server 8787
# 打开 http://127.0.0.1:8787/report.html
~~~

## 七步操作

1. 准备三处端点

本机HTTP服务有slow、fast和error三个路径，延迟不同，其中一个真实返回503。每个输入任务都有稳定ID，不使用LLM生成健康状态。

2. 定义稳定任务ID

在LangGraph状态中声明jobs和带reducer的results。任务身份在分发前确定，不能等完成后再按返回顺序猜它属于哪个服务。

3. 用Send扇出

从START条件边返回多个Send，每个probe收到独立job并发请求。计时记录证明三个任务都在第一个完成前启动。

4. 记录并发时间

按实际end时间观察fast先完成，输入中的slow没有阻塞所有其他任务。图中的时间来自真实HTTP等待，不是随意写的示意值。

5. 保留失败状态

503响应仍以原任务ID保留在结果里。错误服务不能被丢弃，也不能因为更早返回就覆盖第一个输入的成功状态。

6. 拒绝重复ID

reducer按ID合并，故意重复提交同一个ID时抛出错误。默认简单列表append不能自动防止同一任务重入或重复归并。

7. 排序汇总结果

最终按稳定ID排序供展示，并保留原始完成顺序供诊断。下载真实LangGraph源码与记录；本文没有运行模型，也不重复interrupt审批或断点恢复教程。

## 目录身份

- starter：待完成的任务接口与原创输入，TODO不是已完成实现。
- reference：作者原生完成参考和实际产物。records.json/browser-result.json为本地实测记录，不是AI助手回复。
- TASK.md：可交给相应AI助手的原始任务合同。该助手账号生成会话未运行。

## 依赖与许可

原创教学代码以MIT许可提供。第三方项目、模型及浏览器遵循其自身许可。第三方依赖由本地安装获取，不包含node_modules、模型权重、WASM运行时、数据库、缓存或凭据。

## 官方依据

- https://docs.langchain.com/oss/python/langgraph/graph-api#send
