摘要
第 13 篇文章从整体上介绍了lfx执行内核,解释了 Flow JSON 如何转换为 Graph,并最终进入 Vertex 与 Component 的运行路径。
本文继续深入一层,专门讨论 Graph 调度。
核心问题是:
Langflow 如何决定先运行哪个节点,后运行哪个节点,哪些节点可以并发,哪些节点应该跳过?这个问题看起来简单,但在实际 Flow 中会遇到很多复杂情况:
- 多个输入节点。
- 多个输出节点。
- 中间节点共享上游结果。
- 下游节点需要等待多个前驱。
- 条件分支只允许一条路径继续运行。
- 分支重新汇合到同一个节点。
- Loop 组件需要执行子图。
- 图中存在环。
- 前端需要实时知道节点执行状态。
- API 路径需要最终结果,CLI 路径需要逐步结果。
Langflow 的调度核心集中在:
src/lfx/src/lfx/graph/graph/base.py src/lfx/src/lfx/graph/graph/utils.py src/lfx/src/lfx/graph/graph/runnable_vertices_manager.py