【问题标题】:Apache Airflow dag schedules in midnight UTCUTC 午夜的 Apache Airflow dag 时间表
【发布时间】:2018-10-16 21:58:21
【问题描述】:

我使用以下默认参数创建了 Apache Airflow DAG。我希望这个 DAG 每天在世界标准时间晚上 10 点运行,但它始终在世界标准时间上午 12 点运行,并忽略我在 start_date 中设置的日期时间。这不是正确的方法吗?谢谢。

default_args = {
    'owner': config.OWNER,
    'depends_on_past': False,
    'start_date': datetime(2018, 10, 14, 22, 0, 0),
    'email': [config.ALERT_EMAIL],
    'email_on_failure': True,
    'email_on_retry': False,
    'retry_delay': timedelta(minutes=1),
    'retries': 2,
}

# DAG
dag = DAG('Test',
          default_args=default_args,
          description='Initial setup',
          schedule_interval='@daily')

【问题讨论】:

    标签: airflow airflow-scheduler


    【解决方案1】:

    您也可以在 schedule interval 参数中使用 cron format,如下所示:

    # DAG
    dag = DAG('Test',
              default_args=default_args,
              description='Initial setup',
              schedule_interval='0 22 * * *')
    

    【讨论】:

      【解决方案2】:

      关于schedule_interval,您至少有三个选择:

      • datetime.timedelta

      • dateutil.relativedelta

      • cron 样式字符串

      schedule_interval 定义 DAG 运行的频率。这个 timedelta 对象被添加到您最新的任务实例的 execution_date 以计算下一个计划。请记住:start_date 用于任务,确定第一个任务实例的 execution_date。

      【讨论】:

        【解决方案3】:

        以上都是正确的。

        我遇到了一个问题,在 Airflow 2.0 中,将 schedule_interval 放入 default_args 时会被忽略。当我将其删除并将其放入 DAG 声明中时,一切正常。我可以通过查看 UI 中的 DAG 详细信息来对此进行测试。

        例子:

        default_args = {
          'owner': 'Hector Hoffman',
          'depends_on_past': False,
          'start_date':start_date,
          'schedule_interval': '0 5 * * *',
          'email': ['hector@email.com'],
          'email_on_failure': True,
          'email_on_retry': False,
          'retries': 0,
          'on_failure_callback': task_fail_slack_alert
        }
        

        结果:

        然而,当我把它放在 DAG 中时:

        with models.DAG(
                "dealstampede_workflow",
                default_args=default_args,
                catchup=False,
                schedule_interval='0 5 * * *'
        ) as dag:
        

        结果:

        如果有人对为什么 schedule_interval 在 default_args 中不起作用有任何见解,我将不胜感激。谢谢。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-10-03
          • 2010-09-27
          • 2018-12-15
          • 2017-08-05
          • 2017-08-24
          • 2014-07-06
          相关资源
          最近更新 更多