我有一个 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 次运行。什么可能导致这种情况?
Airflow 文档中有一个关于调度的章节,其中指出:
请注意,如果您在一天的 schedule_interval 上运行 DAG,标记为 2016-01-01 的运行将在 2016-01-01T23:59 之后不久触发。换句话说,一旦它涵盖的时间段结束,就会启动作业实例。
让我们重复一遍调度程序在开始日期之后的一个 schedule_interval 时间段运行您的作业,在周期结束时。
您正在经历的正是这一点:今天 (2019-05-06) 为最新的“已完成”间隔创建了 DagRun,这意味着从 2019-04-29 开始的那一周。
像这样思考可能会有所帮助:如果您想定期处理一些数据,则需要在该时间段的数据准备好后开始处理它。
| 归档时间: |
|
| 查看次数: |
2785 次 |
| 最近记录: |