如何查看 Airflow DAG 的完整路径?

How do I view the full path of an Airflow DAG?

在 Airflow 网络界面中,我可以查看 DAG 列表。如果我单击其中一个 DAG,我可以看到 DAG 的不同视图或 DAG 的代码,并且在详细信息选项卡中我可以看到 DAG 文件的名称,但看不到路径。

我也尝试过 airflow list-dags,但这也没有提供我正在寻找的信息。

我可以在 Web 界面中看到一个 DAG,但我找不到它在文件系统中的位置。

有没有办法从 Airflow 网络界面或 Airflow CLI 找到 DAG 的位置?

我不这么认为,但您应该从 airflow.cfg 中搜索 dags_folder 以查找创建 dag 的位置。

此外,airflow-webserver 的日志会准确告诉您正在导入哪些 files/dags,前提是您已登录。

特别是如果您进行开发并更改 DAG/删除 DAG 文件,条目通常会保留在后端数据库中并在 UI 中可见。大多数时候,实际上不再有任何 DAG 文件。

我建议从数据库中清理 DAG,使用类似的东西:

import sys
from airflow.hooks.postgres_hook import PostgresHook

dag_input = sys.argv[1]
hook=PostgresHook( postgres_conn_id= "airflow_db")

for t in ["xcom", "task_instance", "sla_miss", "log", "job", "dag_run", "dag" ]:
  sql="delete from {} where dag_id='{}'".format(t, dag_input)
  hook.run(sql, True)

(基于 的回答)

Airflow 默认提供一些示例 DAG。 DAG 保存在 example_dags 文件夹下。

DAG 的路径: lib/python2.7/site-packages/airflow/example_dags

在 ui 的主 DAG 列表中,DAG 暂停开关的左侧有一个按钮。它解析为:

https://<airflow.blah.com>/admin/dagmodel/edit/?id=<dag_id>

Fileloc 会告诉你气流认为你的 DAG 文件在哪里。然而...

  • 如果您将其他本地文件导入到您的 DAG 文件中,可能会出错
  • 该文件可能不再存在,此信息存储在数据库中