【问题标题】:How to make a DAG in Apache Airflow run like a simple cron job?如何让 Apache Airflow 中的 DAG 像简单的 cron 作业一样运行?
【发布时间】:2021-04-23 02:58:06
【问题描述】:

在过去的几天里,气流调度程序有点让我摸不着头脑,因为即使在 catchup=False 之后它也会回填 dag 运行。 我的时区感知 dag 的开始日期为 13-04-2021 19:30 PST14-04-2021 2:30 UTC,并具有以下配置:

# define DAG and its parameters
dag = DAG(
    'backup_dag',
    default_args=default_args,
    start_date=pendulum.datetime(2021, 4, 13, 19, 30, tz='US/Pacific'),  # set start_date in US/Pacific (PST) timezone
    description='A data backup pipeline',
    schedule_interval="30 19 * * *",  # 7:30 PM every day
    catchup=False,
    is_paused_upon_creation=False
)

此 dag 在边缘设备上运行,该边缘设备有时打开有时关闭。我希望这个 dag 基本上安排在19:30 PST2:30 UTC 运行,只要边缘设备打开,否则不要。奇怪的是,当我将带有 dag 的容器部署到边缘设备时,dag 会自动在预定时间间隔之外开始其第一次运行,即使该时间间隔已经过去!

我在这里缺少什么?我无法理解为什么调度程序会这样做

以下是我阅读所有文档后的理解,如果我错了,请纠正我。

调度程序在2021-04-19T011:30:00+00:00 UTC 获取DAG,根据dag 配置,理想情况下它应该在2021-04-20T02:30:00+00:00 UTC 运行。以下所有时间均为 UTC

      Dag Start_date         1st run(skip catchup=false)   2nd run(skip catchup=false)    3rd run(skip catchup=false)   4th run(skip catchup=false)
2021-04-14T02:30:00+00:00 ---> 2021-04-15T02:30:00+00:00 ---> 2021-04-16T02:30:00+00:00  ---> 2021-04-17T02:30:00+00:00 ---> 2021-04-18T02:30:00+00:00 ---> 

5th run(skip catchup=false)   6th run(should execute)              
 2021-04-19T02:30:00+00:00 ---> 2021-04-20T02:30:00+00:00

那么,即使间隔已经过去,为什么间隔2021-04-18T02:30:00+00:002021-04-19T02:30:00+00:00 仍会进行第 5 次运行?

我希望 DAG 仅在其间隔到来时运行。

【问题讨论】:

    标签: python airflow etl airflow-scheduler


    【解决方案1】:

    这是预期的气流行为:

    关闭追赶。 [...] 关闭时,调度程序仅在最近的时间间隔内创建 DAG 运行。

    Catchup section 中的相应示例与您的类似,并更详细地解释了该行为。

    我能想到的一个肮脏的解决方法是设置 schedule_interval=None 并使用 CLI 从 cron 实际触发 DAG。

    【讨论】:

    • 嗯 ? 有点有趣的解决方法,但似乎是 Airflow 开发人员的重大疏忽
    • @RafayKhan 他们正在研究解决方案cwiki.apache.org/confluence/display/AIRFLOW/…
    • 我尝试通过设置昨天的动态开始日期来规避这个问题,但似乎这也不能解决这个问题。我现在就试试你的方法。
    猜你喜欢
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 2019-08-12
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多