【发布时间】:2020-06-10 22:38:31
【问题描述】:
在 Airflow 中,我们使用 xcoms 表示一个 DAG 已完成,另一个 DAG 可以开始运行。例如。 DAG 1 在上午 12 点运行,并在完成后发送一个 xcom。 DAG 2 从 DAG 1 读取 xcom。
使用它的一个限制是,根据文档——xcom 只能从执行日期较早的 DAG 中读取,但不能从未来执行日期的 DAG 中读取。 https://airflow.apache.org/docs/stable/_modules/airflow/models/xcom.html
举个例子,假设我有 4 个 DAGS、DAG #1、#2、#3、#4,它们都在做某事。然后我有 DAG #5,它可以并行运行多个作业。 DAG#5 出于不同的原因依赖于 DAGS #1-4,并且对它们中的每一个都有单独的检查。 DAGS 安排如下:
DAG #1:上午 12 点 DAG #2:上午 12 点 DAG #3:上午 12 点 DAG #4:凌晨 2 点 DAG #5:凌晨 1 点
DAG #5 有 4 个任务,它们基本上利用airflow.models.xcom.get_one 方法从 DAGS#1-4 读取 XCcom。但由于 DAG #4 的开始时间是凌晨 2 点,因此 DAG #5 无法从 DAG #4 中读取。
有没有办法解决这个问题?到目前为止,唯一考虑的就是提前安排 DAG #4 并让它休眠一个小时,但这似乎不是一个好的做法。
【问题讨论】:
-
你可能想看看 TriggerDagRunOperator airflow.apache.org/docs/stable/_modules/airflow/operators/…
标签: airflow