用途:Blueprint 是用可复用 Python 模板从 YAML 组合 Airflow DAG 的系统,适合以受校验的模板方式编写数据管道,而非完整 Airflow 灵活性场景。
主要能力:用 Blueprint 与 Pydantic BaseModel 定义模板,render() 返回 TaskGroup 或 BaseOperator;在 render() 内组合其他模板形成更高级模板;YAML 中按 steps 声明蓝图、depends_on、version、trigger_rule 等,并可嵌套 Jinja2(env、var、conn、context、profile);支持 vars 变量与按 profile(如 prod/dev)区分取值;可从 Python DAG 内使用或通过 Builder/DAGConfig 循环生成 DAG;可自定义 BlueprintDagArgs 扩展 DAG 级字段;支持包形式共享模板与 loader 选项。
使用方式:安装 airflow-blueprint>=0.5.0(需 Python 3.10+、Airflow 2.5+)。创建 dags/loader.py,写入 from blueprint import build_all_airflow_dags 并调用 build_all_airflow_dags()(函数名影响 Airflow 发现,旧别名 build_all、build_all_dags 已弃用)。在 requirements.txt 添加依赖后,于项目根运行 blueprint list 校验。渲染时用 build_all_airflow_dags(profile=...)。blueprint vars <path> 查看变量解析来源,blueprint lint 校验 YAML 与各 profile。
关键限制:配置字段须为单一类型且 YAML 兼容,拒绝 str | int、Union[A, B]、裸 Any 等;可选 X | None 允许。step 配置默认 extra="ignore",建议 ConfigDict(extra="forbid");DAG args 模型自动严格。${...} 恒为变量引用,shell 中的 ${...} 须写成 $${...} 转义。每个 profile 必须为声明变量赋值。默认仅支持 schedule 与 description 作为 DAG 级字段。模板按目录就近解析,同一目录两个模板为错误。版本号、价格与更多细节资料暂未提供。