Airflow 将继续显示示例 dags,即使将其从配置中删除后也是如此

Airflow will keep showing example dags even after removing it from configuration

即使我在配置文件中关闭 load_examples = False,Airflow 示例 dag 仍保留在 UI 中。

系统通知 dag 不存在于 dag 文件夹中,但它们仍保留在 UI 中,因为调度程序已将其标记为在元数据数据库中处于活动状态。

我知道从那里删除它们的一种方法是直接删除数据库中的这些行,但当然这不是 ideal.How 我应该继续从 UI 中删除这些 dags 吗?

假设您已经通过 Anaconda 安装了 airflow。 否则在您的 python site-packages 文件夹中查找 airflow 并按照以下步骤操作。

按照说明操作后

  • 转到 $AIRFLOW_HOME/lib/python2.7/site-packages/airflow 目录
  • 删除名为 example_dags 的目录或将其重命名以恢复原状
  • 重新启动您的网络服务器

cat $AIRFLOW_HOME/airflow-webserver.pid | xargs kill -9

airflow webserver -p [port-number]

目前无法阻止已删除的 DAG 在 UI 上显示,除非手动删除数据库中的相应行。唯一的其他方法是在 initdb 之后重新启动服务器。

绝对airflow resetdb在这里工作。

我所做的是创建多个 shell 脚本用于各种目的,如启动网络服务器、启动调度程序、刷新 dag 等。我只需要 运行 脚本来执行我想做的事情。这是列表:

(venv) (base) [pchoix@hadoop02 airflow]$ cat refresh_airflow_dags.sh
#!/bin/bash
cd ~
source venv/bin/activate
airflow resetdb
(venv) (base) [pchoix@hadoop02 airflow]$ cat start_airflow_scheduler.sh
#!/bin/bash
cd /home/pchoix
source venv/bin/activate
cd airflow
nohup airflow scheduler >> "logs/schd/$(date +'%Y%m%d%I%M%p').log" &
(venv) (base) [pchoix@hadoop02 airflow]$ cat start_airflow_webserver.sh
#!/bin/bash
cd /home/pchoix
source venv/bin/activate
cd airflow
nohup airflow webserver >> "logs/web/$(date +'%Y%m%d%I%M%p').log" &
(venv) (base) [pchoix@hadoop02 airflow]$ cat start_airflow.sh
#!/bin/bash
cd /home/pchoix
source venv/bin/activate
cd airflow
nohup airflow webserver >> "logs/web/$(date +'%Y%m%d%I%M%p').log" &
nohup airflow scheduler >> "logs/schd/$(date +'%Y%m%d%I%M%p').log" &

别忘了chmod +x那些脚本

希望对您有所帮助。

气流 1.10+:

  • 编辑 airflow.cfg 并设置 load_examples = False
  • 对于每个示例 dag 运行 命令 airflow delete_dag example_dag_to_delete

这避免了重置整个气流数据库。

(自 Airflow 1.10 起有从数据库中删除 dag 的命令,请参阅