请说明在 Airflow 中配置任务执行时间与调度周期的具体方法。
考察说明
考察对 Airflow 调度机制中执行时间与间隔配置的掌握情况。
回答思路
- 【回答框架 1】Airflow 中通过 DAG 参数 schedule_interval 设置调度间隔,可选 cron 表达式、timedelta 对象或预设常量如 @daily。
- 【回答框架 2】任务在调度周期结束后触发,每个周期运行一次,start_date 决定首次调度参考时间,但实际执行时间取决于调度器。
- 【回答框架 3】对于需要具体执行时间的场景,可通过 cron 表达式精确指定小时和分钟,如 '0 8 * * *' 表示每天早上八点。
- 【回答框架 4】若需要不同任务在不同时间执行,可在 DAG 内为各任务设置执行时间,例如通过 PythonOperator 的 execution_timeout 控制最长运行时间,但调度时间主要由 DAG 的 schedule_interval 决定。
- 【回答框架 5】重要提示:任务的实际执行时间还受 catchup 和 depends_on_past 等参数影响,需在生产环境中仔细配置。
- 【关键点 1】schedule_interval 支持 cron、timedelta 和预设常量,是控制调度周期的核心参数。
- 【关键点 2】start_date 与 schedule_interval 共同决定首次执行时间。
- 【关键点 3】使用 cron 表达式可精确到分钟,实现用户在特定时刻运行的需求。
- 【易错点 1】不要将 start_date 当作立即执行时间,其含义是调度起算基准,实际执行需等待第一个间隔结束。
- 【易错点 2】避免将 catchup 与 schedule_interval 混淆,初始设置不当可能导致大量回填。
- 【易错点 3】当 schedule_interval 为 None 时,DAG 不会被定期调度,需通过手动触发或外部触发器运行。