Airflow DAG 调度问题:为每月和每周运行传递正确的执行日期

问题描述 投票:0回答:1

我面临 Airflow 的问题,即我的 DAG 未将正确的执行日期传递给 DAG 内的查询。我有两个 DAG,一个计划每月第一天运行,另一个计划每周三运行。以下是每个 DAG 的配置方式:

每月DAG

@dag(
    dag_id="monthly_dag",
    description="Monthly pipeline",
    start_date=datetime.datetime(2024, 10, 1),
    schedule_interval="0 18 1 * *",  # Every month on the 1st day at 18:00 UTC
    catchup=False,
    default_args={
        "retries": 3,
        "retry_delay": datetime.timedelta(seconds=30),
    },
)

每周DAG

@dag(
    dag_id="weekly_dag",
    description="Weekly pipeline",
    schedule="0 8 * * 3",  # Every Wednesday at 08:00 UTC
    start_date=datetime.datetime(2024, 10, 26),
    catchup=False,
    default_args=default_args,
)

问题 每月 DAG 在 2024 年 11 月 1 日触发时,记录逻辑运行日期 2024 年 10 月 1 日,导致传递给查询的日期为 2024 年 10 月 1 日,而不是预期的 2024 年 11 月 1 日。

对于每周DAG,错过了下一个执行日期(2024-10-30),并且DAG没有被触发。

如何配置两个 DAG 以确保它们以正确的执行日期(它们计划运行的实际日期)运行,以便该日期准确地传递到下游任务和查询?

date airflow scheduling directed-acyclic-graphs
1个回答
0
投票

逻辑日期在安排下一次运行时确定。因此,在您的情况下,逻辑日期将是上个月的日期。这是违反直觉的,但却是预期的行为。在这里阅读更多相关信息:https://www.astronomer.io/docs/learn/scheduling-in-airflow/

© www.soinside.com 2019 - 2024. All rights reserved.