【问题标题】:Airflow dag automatically triggering DAG when toggle to ON?切换到 ON 时,气流 dag 自动触发 DAG?
【发布时间】:2023-03-25 17:18:01
【问题描述】:

我创建了一个计划间隔为 "*/10 * * * *" 的 DAG。但是当我通过 Airflow UI 将 DAG 切换为 ON 时(当时 01/07/2020 07:50:00)。它会自动触发,无需等待完成指定的时间间隔。

#Specified start date
start_date : datetime.strptime('01/07/2020 06:35:00', '%m/%d/%Y %H:%M:%S')

我已经尝试通过添加 'catchup': False 到 dag_args 仍然面临同样的问题

【问题讨论】:

  • 尝试直接在 DAG 构造函数中设置catchup=False。另外,考虑更改start_date

标签: python airflow-scheduler airflow


【解决方案1】:

这是由于您提供的 START_DATE 不正确。根据 cron 表达式“*/10 * * * *”,您的 dag 将每 10 分钟触发一次。当您在 01/07/2020 07:50:00 取消暂停 dag 时,立即触发运行 id 01/07/2020 07:40:00。

首先,我建议您对 start_date 使用常量,因为动态常量会根据您的气流管道由调度程序评估而发生不可预测的行为。

有关 start_date 的更多信息,请参见我编写的常见问题解答条目并整理:https://airflow.apache.org/faq.html#what-s-the-deal-with-start-date

现在,关于 execution_date 及其触发时间,这是 Airflow 新手入门的常见问题。 Airflow 根据它所覆盖的计划周期的左边界设置 execution_date,而不是基于它何时触发(这将是周期的右边界)。例如,当运行 schedule='@hourly' 任务时,任务将每小时触发一次。在下午 2 点触发的任务的 execution_date 为下午 1 点,因为它假定您在下午 2 点处理下午 1 点到下午 2 点的时间窗口。同样,如果您运行每日作业,则执行日期为 2016 年 1 月 1 日的运行将在 2016 年 1 月 2 日午夜后不久触发。

在考虑 ETL 和差异负载时,这种左边界标记很有意义,但在考虑简单的类似 cron 的调度程序时会变得混乱。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多