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

How to configure Airflow dag to run at specific time on daily basis?

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

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

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

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

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

schedule_interval='0 * * * *'

BaseOperator documentation

例如,要在每天早上 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/

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

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

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