Airflow dag 中的 Catchup 标志无法正常工作
Catchup flag in in Airflow dag is not working properly
步数(今天是 2020 年 1 月 7 日):
1) 将以下 dag 放入 Airflow 目录:
from datetime import datetime
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
dag = DAG(dag_id='example_dag', start_date=datetime(2020, 1, 1), catchup=False)
t1 = BashOperator(task_id='bash_task', bash_command='echo Hola!', dag=dag)
请注意阻止 Airflow 在过期日期安排的赶上标志。
2) 启动一个新的 Airflow 实例
3) 在 UI
中打开 dag
4) 执行:
我真的不明白,如果我使用赶上标志并在 1 月 7 日部署,为什么这些过期日期(1 月 5 日和 1 月 6 日)的 dag 会被安排和执行。有什么建议吗?谢谢!
更新:没有赶上标志我得到:
所以:
1) 正在考虑追赶标志
2) 它似乎有错误或配置不当,因为当它设置为 False 时,Airflow 仍在过期日期(1 月 5 日和 1 月 6 日)安排。
就像我在 , Airflow Scheduler creates a DAG Run for the most current instance of the DAG interval series when catchup=False
but there was a bug 中提到的(当为 schedule_interval
使用 timedelta 对象时)创建了 2 个 DagRun。
对于你的情况,你没有将 schedule_interval
字段传递给你的 DAG,因为它采用默认值。默认值为 timedelta(days=1)
(https://github.com/apache/airflow/blob/3ad4f96bae78f16a2240567f65831ca269672d7b/airflow/models/dag.py#L212),这就是创建 2 个 DagRun 的原因。
这将在 Airflow 1.10.11 中修复,并已通过 this PR 为 Master 修复。
步数(今天是 2020 年 1 月 7 日):
1) 将以下 dag 放入 Airflow 目录:
from datetime import datetime
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
dag = DAG(dag_id='example_dag', start_date=datetime(2020, 1, 1), catchup=False)
t1 = BashOperator(task_id='bash_task', bash_command='echo Hola!', dag=dag)
请注意阻止 Airflow 在过期日期安排的赶上标志。
2) 启动一个新的 Airflow 实例
3) 在 UI
中打开 dag4) 执行:
我真的不明白,如果我使用赶上标志并在 1 月 7 日部署,为什么这些过期日期(1 月 5 日和 1 月 6 日)的 dag 会被安排和执行。有什么建议吗?谢谢!
更新:没有赶上标志我得到:
所以:
1) 正在考虑追赶标志
2) 它似乎有错误或配置不当,因为当它设置为 False 时,Airflow 仍在过期日期(1 月 5 日和 1 月 6 日)安排。
就像我在 , Airflow Scheduler creates a DAG Run for the most current instance of the DAG interval series when catchup=False
but there was a bug 中提到的(当为 schedule_interval
使用 timedelta 对象时)创建了 2 个 DagRun。
对于你的情况,你没有将 schedule_interval
字段传递给你的 DAG,因为它采用默认值。默认值为 timedelta(days=1)
(https://github.com/apache/airflow/blob/3ad4f96bae78f16a2240567f65831ca269672d7b/airflow/models/dag.py#L212),这就是创建 2 个 DagRun 的原因。
这将在 Airflow 1.10.11 中修复,并已通过 this PR 为 Master 修复。