4

我们一直在将我们的 cron 作业转换为 Airflow DAG,我很难弄清楚 DAG 的调度在 Airflow 中是如何工作的。一些 DAG 需要在一天中的特定时间(即早上 7 点)运行,而其他 DAG 需要在每月的特定日期/时间(即每月 15 日早上 6 点)运行。

一般来说,Airflow 似乎每天都在正确运行 DAG。因此,schedule_interval = '0 7 * * *每天'start_date': datetime(2017,4,7)早上 7 点运行。

但是,对于每月 DAG (schedule_interval = '0 6 15 * *''start_date': datetime(2017,4,7)),它在 4 月 15 日早上 6 点运行,但从那时起就没有运行过。我尝试每月安排的其他 DAG 在第一个月后同样无法运行。

Airflow关于调度的文档是,IMO,浑浊,对其他SO问题的回答让我更加困惑。我希望有人能澄清我的理解和我试图每月安排的 DAG 出了什么问题。

4

1 回答 1

11

Airflow 的月度运行计划虽然与其每日计划一致,但令人困惑。因此,每月 DAG 的运行时间比您预期的要晚大约一个月。例如,如果我安排一个 DAG 在每月的第一天午夜运行(例如 0 0 1 * *),那么执行日期为 2018-04-01 的运行实际上将在 2018-05-01 午夜之后运行。这是因为 Airflow 在运行前会等待执行周期结束。我认为这个想法是 2018-04-01 的每月执行代表 2018-04-01 到 2018-05-01 整个期间的数据。

您需要牢记这一概念来重组您的日程安排。

于 2018-04-06T15:07:44.667 回答