如何在气流的非追赶设置中调整执行日期?
how to align execution date in a non-catchup setting in airflow?
在追赶设置中,我观察到发送给执行者的执行日期正确对齐,但是当我像这样关闭追赶设置时:
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 的时间对齐.
我想通了,下面的修改有效:
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 构造中使用它,它现在可以正常工作。
在追赶设置中,我观察到发送给执行者的执行日期正确对齐,但是当我像这样关闭追赶设置时:
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 的时间对齐.
我想通了,下面的修改有效:
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 构造中使用它,它现在可以正常工作。