步骤(今天是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)执行。
我真的不明白为什么这些过期日期(1月5日和1月6日)的dag会被安排和执行,如果我使用追赶标志并在1月7日部署。有什么建议吗?有什么建议吗?
更新:没有追赶标志,我得到了。
所以:
1) 补足标志正在被考虑在内。
2)似乎有一个bug,或者是配置不好,因为当它设置为False时,Airflow仍然在过期日期(1月5日和1月6日)进行调度。
就像我在 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 中得到修正,并且已经在主程序中用 这个 公关: