airflow - 动态创建的 dag 会自动从 Airflow UI 中删除
问题描述
我对Apache Airflow很陌生,所以我不确定气流的所有功能。
我的要求是为新添加到数据库的条目创建动态 dag。检查是否有新添加到 DB 的标准是是否dag_id
针对该条目进行了更新。如果没有,那么我们需要为它创建一个新的 dag 并dag_id
针对该条目更新。
Dag_id 为 Null 的数据库中的新条目
Id :d001 ,
Dag_id :Null
一旦 main dag(用于创建动态 dag)运行并获取此条目,就会创建一个 dag 并将dag_id
其更新回数据库。
Id : d001 ,
Dag_id : dagid-001
我面临的挑战是一旦主要 dags 再次运行以获取新添加的条目(这次我们不会检索 d001)。之前创建的动态 dags(dagid-001) 将从Airflow UI 和Airflow list_dags 中删除。
来自主 dag 的代码以创建动态 dag
dag_id = 'hello_world_{}'.format(str(new_entry[0]))
default_args = {'owner': 'airflow',
'start_date': datetime(2018, 1, 1)
}
schedule = ## frequency
dag_number = new_entry
globals()[dag_id] = create_dag(dag_id,
schedule,
dag_number,
default_args)
这是动态 dag 的预期行为还是我在创建它们时遗漏了什么?
解决方案
DAG
对于 Airflow,只有在扫描目录中的 Python 文件时找到相应的对象时,才会存在 DAG dag
。
因此,您的主 DAG 不仅要为新的数据库条目生成 DAG,还要为所有以前的条目生成 DAG。
推荐阅读
- python - 在我的 python 应用程序中使用 Tkinter 单选按钮小部件作为 GUI
- arrays - 来自正整数数组的随机整数数组
- r - 尝试使用 R 写入 firebase(firestore)时出错
- entity-framework-core - 创建外键时EF Core更新数据库失败
- reactjs - React Datepicker - 添加上一年和下一年的按钮
- react-native - 在 Avatar 组件周围有一个圆圈
- c++ - 将继承的参数传递给基类构造函数,然后在派生类构造函数中执行某些操作
- sql - 将excel数据集导入预先存在的SQL表的最简单方法?
- python - 如何按键汇总字典列表?
- firebase - 在查询快照上获取 null