如何配置Airflow dag在每天的特定时间运行?

时间:2016-02-27 10:58:27

标签: python airflow

如何将Airflow dag配置为每天在指定时间执行,无论发生什么,都会像crons一样。

我知道使用TimeSensor可以获得类似的行为,但在这种情况下,它取决于传感器任务,并且可能与dag执行时间冲突。

示例:使用传感器方法如果我有传感器在0小时15分钟运行但是如果dag在稍后执行则我的任务被延迟,所以即使对于传感器方法我也需要确保Dag在右边执行时间。

那么如何确保在指定时间执行Dag?

3 个答案:

答案 0 :(得分:7)

例如,每天早上2:30开始DAG,您可以执行以下操作:

DAG(
   dag_id='dag_id',
   # start date:28-03-2017
   start_date= datetime(year=2017, month=3, day=28),
   # run this dag at 2 hours 30 min interval from 00:00 28-03-2017
   schedule_interval='30 2 * * *')

在配置计划之前,可以在此处验证和测试对cron间隔的解释:https://crontab.guru/

答案 1 :(得分:0)

实例化DAG时,可以将schedule_interval设置为字符串cron表达式:

schedule_interval='0 * * * *'

BaseOperator documentation

答案 2 :(得分:0)

@ruhong 我在评论中看到你每隔一天想知道怎么做。月份是第三个参数,如果您执行 2 30 */2 * *,它将每隔一天运行一次(凌晨 2:30)。它有时会根据月份计算出有点奇怪。您可以通过指定范围来强制它运行偶数或奇数天:

# Will only run on odd days:
2 30 1-31/2 * * command

# Will only run on even days:
2 30 2-30/2 * * command