快速上手
核心思想:参数名即依赖。写一个普通函数,参数名匹配上游任务名,框架自动注入结果。
最小示例
import pyflowx as px
def extract() -> list[int]:
return [1, 2, 3]
# 参数名 extract 自动匹配上游任务名 → 自动注入
def double(extract: list[int]) -> list[int]:
return [x * 2 for x in extract]
graph = px.Graph.from_specs([
px.TaskSpec("extract", extract),
px.TaskSpec("double", double, ("extract",)),
])
report = px.run(graph, strategy="sequential")
print(report["double"]) # [2, 4, 6]
三种任务形态
**函数任务**(
fn):普通 Python 函数,参数名驱动自动注入**命令任务**(
cmd):执行外部命令,支持list[str]/str``(shell)/ ``CallableYAML 声明式:从 YAML 文件加载任务图
graph = px.Graph.from_specs([
px.TaskSpec("list", cmd=["ls", "-la"]),
px.TaskSpec("greet", fn=lambda: "hello"),
])
执行策略
PyFlowX 提供四种执行策略:
策略 |
并发模型 |
适用场景 |
|---|---|---|
|
串行 |
调试、CPU 密集 |
|
线程池 |
I/O 密集同步 |
|
事件循环 |
I/O 密集异步 |
|
依赖驱动 |
最大化并行度(默认推荐) |
report = px.run(graph, strategy="dependency")
结果访问
report["task_name"] # 任务返回值
report.result_of("task_name") # 完整 TaskResult
report.success # 整体是否成功
report.summary() # 统计字典
report.failed_tasks() # 失败任务名列表
下一步
TaskSpec —— 任务描述 —— TaskSpec 详细配置
YAML 任务编排 —— YAML 声明式任务编排
pf 统一 CLI 入口 ——
pf统一 CLI 入口