【问题标题】:Conditional Cron job expression for running task fortnightly and daily用于每两周和每天运行任务的条件 Cron 作业表达式
【发布时间】:2021-07-21 15:45:45
【问题描述】:

我需要在以下条件下运行 2 个任务

  1. 第一个任务将在每个星期四的凌晨 3 点运行
  2. 第二个任务将在每天上午 12 点运行,第一个作业将运行的那一天除外。

我是 cron 作业表达式的新手,但尝试了几种方法。我使用 Spark、Scala 来创建任务,使用 Airflow 来安排任务。

schedule_interval= '0 0 3 1-5,15-19,29-31 * THU'

我已经为 Airflow 中的第一个任务尝试了上述表达式,但如果在 6-14、20-28 发生交替星期四,它将失败例如在 2022 年 1 月,星期四将在 6 日、13 日、20 日和 27 日到来。 另一个问题会出现,例如,如果另一个星期四在 29-31 之间,而下星期四在 1-5 之间,则作业将连续 2 个星期四运行。

【问题讨论】:

    标签: cron airflow-scheduler


    【解决方案1】:

    我使用下面提到的代码解决了上述用例

    def is_alternate_thursday(starting_day, date_to_check):
        set_day = THURSDAY
    
        if (date_to_check < starting_day) or (date_to_check.weekday() != set_day):
            return False
    
        base_week = starting_day.isocalendar()[1]
        checked_week = date_to_check.isocalendar()[1]
    
        return (checked_week - base_week) % 2 == 0
    

    现在我们可以根据标志运行任务了。

    【讨论】:

      猜你喜欢
      • 2019-10-09
      • 1970-01-01
      • 2015-12-02
      • 2020-02-20
      • 2020-09-27
      • 2012-08-09
      • 2017-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多