【问题标题】:crontab expression to schedule a DAG to run in specific time intervalcrontab 表达式来安排 DAG 在特定时间间隔内运行
【发布时间】:2021-06-18 04:53:20
【问题描述】:

我有一个要求,我的 DAG 必须从早上 5 点到早上 6:30 每 5 分钟运行一次。我知道如何使用 crontab 来安排它,如果它是从早上 5 点到早上 6 点,例如 */5 5-6 * * * 但我必须在早上 5 点到早上 6:30 的时间间隔内执行此操作。 任何帮助表示赞赏。

【问题讨论】:

    标签: cron airflow airflow-scheduler directed-acyclic-graphs


    【解决方案1】:

    由于您想要从 0 到 30 分钟,因此您只需将表达式中的每分钟改为每 5 分钟步长为 0-30 分钟。

    0-59/5 5-6 * * *
    

    您也可以参考https://crontab.guru/ 来检查下一个值。由于它只提供 5 个下一个值,因此您可以将步长从 5 更改为 20 以获得更好的清晰度。

    【讨论】:

    • 这个表达式只在 5 点到 5 点 30 分运行。谢谢你:)
    • 啊,你是对的。仅适用于 5-5:30 和 6-6:30。已更新 cron 规则。请让我知道这是否有效。谢谢
    • 是的,因为我们没有任何直接的解决方案,我已经从 5 到 7 实施,如图所示。谢谢你:)
    【解决方案2】:

    我认为唯一的解决方案应该是使用两个 cron 调度程序。

    */5 6 * * *
    0-30/5 6 * * *
    

    所以你需要用不同的调度器复制 dag。

    【讨论】:

    • 感谢您的建议。我只是做了一些改变,这对我有用。我只是将 schedule_interval 指定为 ['*/5 5 * * *','0-30/5 6 * * *'] 这有帮助。
    • 我不知道你做了什么,但这不起作用。 Airflow 不支持同一个 DAG 中的 2 个 cron 表达式。
    • 是的,这似乎是个问题。有没有办法结合这些时间表间隔?但我不想复制我的 dag
    • 我认为我们没有其他方法可以将两个调度程序间隔组合在 1 个 DAG 中。我知道重复 dag 不好,但在这种情况下它是可以接受的。
    • @Rajalakshmi 我认为另一种解决方案是使用调度程序 */5 5-6 * * * 但使用 python 分支运算符。在此运算符中,您应检查执行日期,然后如果当前时间为 6 分钟且分钟高于 30,则应将任务路由到虚拟任务。使用该解决方案,您无需复制 DAG/
    猜你喜欢
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    相关资源
    最近更新 更多