Airflow DAG 预定日期晚一周

Sat*_*ish 6 python airflow

我有一个 DAG 计划在10AM每个星期一运行。这是我的 dag 定义

DAG = models.DAG(
  dag_id="etl", schedule_interval="0 10 * * 1", start_date=datetime(2018, 10, 1), 
  default_args=args
)

latest_only = LatestOnlyOperator(task_id="latest", dag=DAG)

extract = PythonOperator(
task_id="extract", python_callable=extract,  dag=DAG)

extract.set_upstream(latest_only)
Run Code Online (Sandbox Code Playgroud)

它在10AM每个星期一触发。它今天运行(05/06/2019)但它的预定日期为2019-04-29 14:00:00 任务实例具有以下日期

execution_date : 2019-04-29T14:00:00+00:00
start_date : 2019-05-06 14:19:48.527488+00:00
end_date : 2019-05-06 14:19:54.225001+00:00
Run Code Online (Sandbox Code Playgroud)

上周一 (4/29) 运行良好,日期正确,在 dag 历史记录中,它现在在 4/29 显示 2 次运行。什么可能导致这种情况?

bos*_*jak 8

Airflow 文档中有一个关于调度章节,其中指出:

请注意,如果您在一天的 schedule_interval 上运行 DAG,标记为 2016-01-01 的运行将在 2016-01-01T23:59 之后不久触发。换句话说,一旦它涵盖的时间段结束,就会启动作业实例。

让我们重复一遍调度程序在开始日期之后的一个 schedule_interval 时间段运行您的作业,在周期结束时。

您正在经历的正是这一点:今天 (2019-05-06) 为最新的“已完成”间隔创建了 DagRun,这意味着从 2019-04-29 开始的那一周。

像这样思考可能会有所帮助:如果您想定期处理一些数据,则需要该时间段的数据准备好开始处理它。