气流任务仅在第一次运行时可用

时间:2021-07-27 19:14:40

标签: airflow directed-acyclic-graphs

我的用例很简单:我有一些进程与数据库中的一些表进行交互。我想自动创建表,所以我添加了一个 create_table_if_not_exists_task。我只想在第一次 DAG 运行中运行该任务,但不想在接下来的运行中运行该任务,因为它占用了我可以在其他地方使用的 DAG 时间/资源。

我的问题是:在 Airflow 中我是否有一种干净的方法来做到这一点?

我的想法是使用该信息更新 Airflow 变量并在 DAG 解析中检查它。不喜欢它,因为它会在每个心跳中创建到元数据数据库的连接。

1 个答案:

答案 0 :(得分:1)

您可以在要控制的任务前使用 ShortCircuitOperator(甚至 BranchPythonOperator,具体取决于您的管道),访问 dag_run 对象(直接或通过 {{1 }}) 在 Python callable 中,然后使用 context 方法检查任何以前的 DagRuns。像这样的东西(虽然未经测试):

DagRun.get_previous_dagrun()