2

我们正在使用气流 2.00。我正在尝试实现一个做两件事的 DAG:

  1. 通过 API 触发报告
  2. 将报告从源下载到目标。

任务 1 和 2 之间至少需要 2-3 小时的间隔。根据我的研究,我有两个选择

  1. 两个任务的两个 DAG。安排与第一个 DAG 相隔两小时的第二个 DAG
  2. 此处提到的两个任务之间的延迟

这两个选项之间是否存在偏好。Airflow 2.0 有第三种选择吗?请指教。

4

2 回答 2

1

第三种选择是在等待报告准备好的两个任务之间使用传感器。如果您的源有一个现成的,或者子类化基本传感器的自定义一个。

前两个选项是固定等待时间的不同实现。它有两个问题: 1. 如果在预定义的时间之后仍然没有准备好报告怎么办?2. 如果报告提前准备好,则不必要的等待。

于 2021-05-21T19:59:00.640 回答
1

另一种选择是让传感器等待报告出现。您可以利用传感器的重新调度模式来释放工作人员插槽。

generate_report = GenerateOperator(...)
wait_for_report = WaitForReportSensor(mode='reschedule', poke_interval=5 * 60, ...)
donwload_report = DonwloadReportOperator(...)

generate_report >> wait_for_report >> donwload_report
于 2021-05-21T19:56:53.403 回答