[关闭]
@JunQiu 2018-10-15T20:39:05.000000Z 字数 2497 阅读 4432

关于airflow的定时机制

tools


1、关于airflow的定时机制

1.1、概述

1.2、airflow定时机制原理

1.2.1、DAG文件刷新
  1. 1dag目录刷新间隔:dag_dir_list_interval,默认100s
  2. 2min_file_process_interval,默认0s
  3. This parameter ensures that a DAG definition file is not processed more often than once every `min_file_process_interval` seconds.
1.2.2、定时任务
  1. 步骤 0. 从磁盘中加载可用的 DAG 定义(填充 DagBag
  2. 当调度器运行时:
  3. 步骤 1. 调度器使用 DAG 定义来标识并且/或者初始化在元数据的 db 中的任何 DagRuns
  4. 步骤 2. 调度器检查与活动 DagRun 关联的 TaskInstance 的状态,解析 TaskInstance 之间的任何依赖,标识需要被执行的 TaskInstance,然后将它们添加至 worker 队列,将新排列的 TaskInstance 状态更新为数据库中的“排队”状态。
  5. 步骤 3. 每个可用的 worker 从队列中取一个 TaskInstance,然后开始执行它,将此 TaskInstance 的数据库记录从“排队”更新为“运行”。
  6. 步骤 4. 一旦一个 TaskInstance 完成运行,关联的 worker 就会报告到队列并更新数据库中的 TaskInstance 的状态(例如“完成”、“失败”等)。
  7. 步骤 5. 调度器根据所有已完成的相关 TaskInstance 的状态更新所有活动 DagRuns 的状态(“运行”、“失败”、“完成”)。
  8. 步骤 6. 重复步骤 1-5
  1. 1、当我把start_date设置为datetime.now()时,定时任务并未执行??
  2. 官方解释:(不是很明白)
  3. We recommend against using dynamic values as start_date, especially datetime.now() as it can be quite confusing. The task is triggered once the period closes, and in theory an @hourly DAG would never get to an hour after now as now() moves along.
  4. 2、当把时间设置为动态时间时,即发生回填之后定时任务也未执行??
  5. 回答同上文

1.3、参考文档

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注