Airflow dag中的Catchup标志不能正常使用。

问题描述 投票:0回答:1

步骤(今天是2020年1月7日)。

1)把下面的dag在Airflow dir。

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中打开匕首。

4)执行。

enter image description here

我真的不明白为什么这些过期日期(1月5日和1月6日)的dag会被安排和执行,如果我使用追赶标志并在1月7日部署。有什么建议吗?有什么建议吗?

更新:没有追赶标志,我得到了。

enter image description here

所以:

1) 补足标志正在被考虑在内。

2)似乎有一个bug,或者是配置不好,因为当它设置为False时,Airflow仍然在过期日期(1月5日和1月6日)进行调度。

airflow airflow-scheduler airflow-operator
1个回答
1
投票

就像我在 https:/stackoverflow.coma617409045691525。当以下情况发生时,气流调度器为DAG间隔系列的最新实例创建一个DAG运行。catchup=False 但有 虫子 (当使用timedelta对象为 schedule_interval),创建了2个DagRuns。

对于您的情况,您没有通过 schedule_interval 字段到您的 DAG,因为它采用默认值。默认值是 timedelta(days=1) (https:/github.comapacheairflowblob3ad4f96bae78f16a2240567f65831ca269672d7bairflowmodelsdag.py#L212。)这就是为什么有2个DagRuns被创建。

这将在 Airflow 1.10.11 中得到修正,并且已经在主程序中用 这个 公关:

© www.soinside.com 2019 - 2024. All rights reserved.