【问题标题】:Why my Dag is not running if the updated schedule interval is less than the previous schedule interval of the dag如果更新的计划间隔小于 dag 的先前计划间隔,为什么我的 Dag 没有运行
【发布时间】:2019-07-30 20:53:52
【问题描述】:

我正在使用 schedule_interval 运行 15 分钟的工作流程。现在完成工作流的执行后,我修改了工作流的配置,将schedule_interval更新为10分钟。

在这种情况下,它根据上次执行日期和当前开始日期之间的差异创建一些实例,在这些实例中,任务没有开始,只是 dag 一直处于运行状态。

如何限制这些额外的实例或使它们默认失败?

设 DAG 的 Start date 为 29/7/2019T12:00PM Schedule Interval 是 15 分钟。 现在让在下午 12:32 运行两个实例后,我将工作流 schedule_interval 更新为 10 分钟,将 start_date 更新为当前日期,即 29/7/2019T12:32PM。

在这种情况下,dag 的 last execution date 是 29/7/2019T12:30PM。 否根据last execution date 和更新的schedule_interval 下一个实例应该在下午12:40 运行,但根据previous schedule_intervalnext execution date 是12:45。

所以它不会运行这个实例。并会给出依赖错误说:

your execution date is less than the start date.

【问题讨论】:

    标签: airflow airflow-scheduler


    【解决方案1】:
    • fool-proof way 躲避 scheduler 的此类不当行为是为了不混淆它,即不要更改 DAG 的 schedule_interval。换句话说,如果你需要修改一个 DAG 的调度间隔,只需重命名它;这将使气流忘记旧的 DAG,并将重命名的 DAG 视为全新的 DAG

    • 但我的anecdotal tip 是,如果您碰巧(比如说不小心)修改了 DAG 的调度间隔,重新启动 Airflow 调度程序 / webserver 进程也可以解决问题。

    【讨论】:

    • 除此之外,气流调度程序有一个标志--num_runs,您可以在其中指定在调度程序自行停止之前要运行多少个调度程序循环。这可能是一种频繁重启气流调度程序的便捷方法,以帮助减轻第二个要点中的调度程序异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 2021-10-18
    • 1970-01-01
    相关资源
    最近更新 更多