gpt4 book ai didi

Airflow 为什么调度程序不启动我的 DAG?

转载 作者:行者123 更新时间:2023-12-02 15:51:06 26 4
gpt4 key购买 nike

我有以下达格: enter image description here

第一个 0 1 * * * 的 Dag 运行没有任何问题。结束 DAG 0 10 1 * *没有跑。当我这样做时:

import datetime
print datetime.datetime.now()

我得到:

2018-07-01 12:14:15.632812

所以我不明白为什么这个 DAG 没有被安排。据我了解,不一定要在 10:00 准确运行,但统计数据应该为正在运行

根据第一个任务的“最新运行”是2018-06-30 01:00我怀疑我实际上并不理解Airflow时钟。从我的角度来看,最后一次运行是在 2018-07-01 01:00 因为它是在今天早上而不是昨天运行的。

编辑:我在documntation看到了这一段:

“请注意,如果您以一天的 Schedule_interval 运行 DAG,则标记为 2016-01-01 的运行将在 2016-01-01T23:59 之后不久触发。换句话说,一旦它涵盖的时期已经结束。”

所以我想知道..我应该将所有事情安排在我想要的实际日期的前一天吗?那么,如果我真的希望某些东西在 0 10 1 * * 运行,我应该将其安排到 0 10 30 * * 吗?换句话说,如果我想要在每月 1 日 10:00 运行某些内容,我应该将其安排在每月最后一天 10:00 吗?

这其中的逻辑在哪里?这是非常难以理解和遵循的。

根据this,情况变得更糟没有办法告诉调度程序这个输入。我该怎么办?!

最佳答案

Airflow 安排任务在计划时间间隔的END 运行。这可能有点违反直觉,但基于这样的想法:特定间隔的数据在该间隔结束之前不可用。

假设您有一个应该每天运行的工作流程。在当天(今天)结束之前,您无法获取昨天的所有数据。

就您的情况而言,第一个 DAG 的最后一次运行是在昨天,因为这是与该 DagRun 关联的“execution_date” - 您的 DAG 今天运行针对昨天的数据。

如果您希望 DAG 在每月 1 日运行,那么更改计划并不是一个坏主意。但是,如果您希望 DAG 运行以获取每月 1 日的关联数据(即将该日期传递到 API 请求或 SQL 查询中),那么您的做法是对的。

关于Airflow 为什么调度程序不启动我的 DAG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51123271/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com