Graph —— DAG 构建

Graph 管理任务集合,提供建构建、校验、分层、可视化能力。

构建方式

# 图级默认值:TaskSpec 字段为 None 时回退
defaults = px.GraphDefaults(retry=px.RetryPolicy(max_attempts=2), timeout=60.0)

graph = px.Graph.from_specs([...], defaults=defaults)  # 整批校验(推荐)

# 或增量构建
graph = px.Graph(defaults=defaults)
graph.add(px.TaskSpec("a", fn_a))
graph.add(px.TaskSpec("b", fn_b, ("a",)))

常用方法

graph.validate()                    # 显式校验(环检测)
graph.layers()                      # 拓扑分层(Kahn 算法)
graph.to_mermaid()                  # Mermaid 可视化
graph.describe()                    # 人类可读摘要
graph.subgraph(("api",))            # 按标签切片
graph.subgraph_by_names(("a", "b")) # 按名称切片
graph.map("fetch", [1, 2, 3], lambda i: TaskSpec(f"fetch_{i}", ...))  # 批量 fan-out

图组合

compose / GraphComposer 把带字符串引用的多个图展开为纯 Graph

graphs = {
    "build": px.Graph.from_specs([px.TaskSpec("b", cmd=["echo", "b"])]),
    "all": px.Graph.from_specs(["build", px.TaskSpec("t", cmd=["echo", "t"])]),
}
resolved = px.compose(graphs)  # "all" 图中的 "build" 引用被展开

引用格式:"command_name"``(整个图)或 ``"command_name.task_name"``(特定任务)。 ``CliRunner 内部自动调用 compose

完整方法说明详见 API 参考