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

为何Airflow REST API仍返回已删除DAG?如何解决?

解决Airflow 2.1.0删除DAG后API仍返回该DAG的问题

Airflow 2.x版本中,删除DAG文件后元数据库不会自动清理对应记录,这就是API仍能查到已删除DAG的核心原因。以下是具体解决步骤:

1. 确认DAG文件已彻底移除

  • 检查Airflow的DAG目录(默认路径为$AIRFLOW_HOME/dags),确保目标DAG的.py文件及相关依赖已完全删除。
  • 再次重启Airflow调度器和Web服务器,确保进程加载最新的DAG目录状态。

2. 清理元数据库中的DAG记录

方法一:使用Airflow CLI命令(推荐)

Airflow 2.1.0支持通过CLI直接清理DAG元数据,执行以下命令(替换<你的DAG_ID>为实际ID):

airflow dags delete <你的DAG_ID>

该命令会自动清理dag、dag_run、task_instance、xcom等表中对应DAG的所有关联记录,无需手动编写SQL。

方法二:手动操作元数据库

若CLI命令无法使用,可直接连接Airflow元数据库执行清理操作:

  1. 连接到元数据库(以PostgreSQL为例):
psql -U <数据库用户名> -d <Airflow元数据库名>
  1. 依次执行以下SQL语句(替换<你的DAG_ID>):
-- 删除DAG主记录
DELETE FROM dag WHERE dag_id = '<你的DAG_ID>';
-- 删除DAG运行历史记录
DELETE FROM dag_run WHERE dag_id = '<你的DAG_ID>';
-- 删除任务实例记录
DELETE FROM task_instance WHERE dag_id = '<你的DAG_ID>';
-- 删除XCom交互数据
DELETE FROM xcom WHERE dag_id = '<你的DAG_ID>';

注意:操作数据库前请务必备份数据,避免误删导致不可逆损失。

3. 配置自动清理(避免后续重复问题)

修改airflow.cfg配置文件,开启自动清理机制:

  • 设置delete_dag_from_db = True:开启后,调度器检测到DAG文件删除时,会自动清理元数据库中的对应记录。
  • 调整DAG目录扫描间隔:设置dag_dir_list_interval = 30(单位:秒),让调度器更频繁地检查DAG目录变化,及时响应文件删除操作。

修改配置后需重启调度器和Web服务器生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 09:57:11