如何在气流的非追赶设置中调整执行日期?

时间:2018-09-11 22:38:45

标签: airflow airflow-scheduler

在追赶设置中,我观察到发送给执行器的执行日期已正确对齐,但是当我关闭像这样的追赶设置时:

import airflow
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.operators.dummy_operator import DummyOperator
from datetime import datetime, timedelta

default_args = {
    'owner': 'airflow',
    'depends_on_past': True,
    'start_date': airflow.utils.dates.days_ago(5),
    'schedule_interval': '@daily'
}

dag = DAG('xiang-01', catchup=False, default_args=default_args)

task = BashOperator(
    task_id='task',
    bash_command='echo "{{ task_instance_key_str }} {{ ts }}" && sleep 10',
    dag=dag)

执行日期未对齐,例如,呈现的任务为:

echo "xiang-01__task__20180909 2018-09-09T22:33:17.961926+00:00" && sleep 10

根据文档,它应该对齐:https://airflow.apache.org/scheduler.html#backfill-and-catchup

那我想念什么?

更新

更确切地说,由于我的开始日期是通过days_ago(5)设置的,该日期设置为5天前的午夜,因此请从00:00:00开始。我期望的是,执行日期也应该在午夜之前对齐,类似于2018-09-09T00:00:00,但是我得到的是时间2018-09-09T22:33:17.961926+00:00,它看起来像是我取消暂停此DAG的时间对齐的时间

1 个答案:

答案 0 :(得分:1)

我发现,进行了以下修改:

import airflow
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.operators.dummy_operator import DummyOperator
from datetime import datetime, timedelta

default_args = {
    'owner': 'airflow',
    'depends_on_past': True,
    'start_date': airflow.utils.dates.days_ago(5),
    #'schedule_interval': '@daily'
}

dag = DAG('xiang-02', catchup=False, default_args=default_args, schedule_interval='@daily')

task = BashOperator(
    task_id='task',
    bash_command='echo "{{ task_instance_key_str }} {{ ts }}" && sleep 10',
    dag=dag)

抓住的地方是,schedule_interval现在是DAG参数,如果我在DAG结构中使用它,则现在可以正常工作。