仅运行最新的 Airflow DAG

Bal*_*int 4 airflow airflow-scheduler

假设我想使用 Airflow 运行一个非常简单的 ETL DAG:它检查 DB2 中的最后一次插入时间,并将新的行从 DB1 加载到 DB2(如果有)。

有一些可以理解的要求:

  1. 每小时安排一次,前几次运行将持续1个多小时
    • 例如。第一次运行应该处理一个月的数据,它持续72小时,
    • 所以第二次运行应该处理过去 72 小时,它持续 7.2 小时,
    • 第三个过程7.2小时,一个小时内完成,
    • 从那时起,它每小时运行一次。
  2. 在 DAG 运行时,不要启动下一个,而是跳过它。
  3. 如果时间超过触发事件,并且 DAG 没有启动,请不要随后启动它。
  4. 还有其他 DAG,DAG 应该独立执行。

我发现这些参数和运算符有点令人困惑,它们之间有什么区别?

  • depends_on_past
  • catchup
  • backfill
  • LatestOnlyOperator

我应该使用哪个,以及哪个 LocalExecutor?

附言。已经有一个非常相似的线程,但它并不令人筋疲力尽。

小智 5

DAG max_active_runs = 1 结合 catchup = False 可以解决这个问题。