You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在project目录用单个.airflowignore忽略所有dag下的deprecated文件夹?

问题描述

我的目录结构如下:

.
├── project
│   ├── dag_1
│   │   ├── dag
│   │   │   ├── current
│   │   │   │   └── dag_1_v2.py
│   │   │   └── deprecated
│   │   │       └── dag_1_v1.py
│   │   └── sparkjobs
│   │       ├── current
│   │       └── deprecated
│   └── dag_2
│       ├── dag
│       │   ├── current
│       │   │   └── dag_2_v2.py
│       │   └── deprecated
│       │       └── dag_2_v1.py
│       └── sparkjobs
│           ├── current
│           └── deprecated

我想忽略所有deprecated文件夹,尝试过在每个dag_1/dag_2目录下放.airflowignore,内容写*/deprecated,能成功忽略对应目录下的deprecated DAG,但需要每个目录都放文件,太麻烦。

后来尝试在project目录下只放一个.airflowignore,内容写**/**/deprecated,但Airflow还是会识别到deprecated里的DAG。

请问怎么在project层级只用一个.airflowignore文件,忽略每个dag_n/dag文件夹下的所有deprecated文件夹?这是否可行?


解决方案

当然可行,你只需要在project目录下的.airflowignore里写对规则就行,推荐两种写法:

写法一:精准匹配目标路径

适合固定以dag_开头的DAG目录场景:

dag_*/dag/deprecated/

写法二:兼容灵活扩展

如果以后可能新增非dag_开头的DAG目录,用这个更稳妥:

*/dag/deprecated/
**/dag/deprecated/

要是你还想顺便忽略sparkjobs下的deprecated文件夹,把规则补全即可:

*/dag/deprecated/
*/sparkjobs/deprecated/
**/dag/deprecated/
**/sparkjobs/deprecated/

为啥之前的**/**/deprecated没效果?

Airflow的.airflowignore是从你放置文件的目录(也就是project)开始计算相对路径的。你的目标路径是dag_1/dag/deprecated(三级路径),而**/**/deprecated的匹配逻辑是“任意两级目录之后的deprecated”,对应到project下就是a/b/deprecated,自然匹配不上三级路径的a/b/c/deprecated。

内容的提问来源于stack exchange,提问作者OdiumPura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 20:35:16