出于某种原因,Airflow 似乎不会触发具有每周计划间隔的 dag 的最新运行。

当前的日期:

$ date
$ Tue Aug  9 17:09:55 UTC 2016

DAG:
from datetime import datetime
from datetime import timedelta

from airflow import DAG
from airflow.operators.bash_operator import BashOperator

dag = DAG(
    dag_id='superdag',
    start_date=datetime(2016, 7, 18),
    schedule_interval=timedelta(days=7),
    default_args={
        'owner': 'Jon Doe',
        'depends_on_past': False
    }
)

BashOperator(
    task_id='print_date',
    bash_command='date',
    dag=dag
)

运行调度程序
$ airflow scheduler -d superdag

您预计总共有四次 DAG 运行,因为调度程序应该回填 7/18、7/25、8/1 和 8/8。
但是,未安排最后一次运行。

Airflow 不回填最新运行-LMLPHP

Airflow 不回填最新运行-LMLPHP

编辑 1:

我理解 Vineet,尽管这似乎并不能解释我的问题。

在我上面的例子中,DAG 的开始日期是 7 月 18 日。
  • 第一次 DAG 运行:7 月 18 日
  • 第二次 DAG 运行:7 月 25 日
  • 第三次 DAG 运行:8 月 1 日
  • 第四次 DAG 运行:8 月 8 日(未运行)

  • 每个 DAG Run 处理上周的数据。

    今天是 8 月 9 日,我预计第四次 DAG Run 将在 8 月 8 日的执行日期执行,该日期处理上周(8 月 1 日至 8 月 8 日)的数据,但事实并非如此。

    最佳答案

    Airflow 总是安排在前一时期。因此,如果您有一个计划在 8 月 9 日每天运行的 dag,它将计划在 8 月 8 日执行 execution_date 运行。类似地,如果计划间隔是每周一次,那么在 8 月 9 日,它将安排回 1 周,即 8 月 2 日,尽管这会在 8 月 9 日本身运行。这只是 Airflow 簿记。您可以在 Airflow wiki ( https://cwiki.apache.org/confluence/display/AIRFLOW/Common+Pitfalls ) 中找到它:

    关于 Airflow 不回填最新运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38856886/

    10-12 01:15
    查看更多