我正在尝试安排一次每x秒运行一次的dag。我将开始时间设为catchup = False的过去日期,将结束时间设为未来的几秒钟。
尽管dag按预期方式开始,但它并没有结束并永远持续下去。
如果我使用像 datetime(2019,9,26)这样的绝对结束时间而不是使用 datetime.now()+ timedelta(seconds = 100),则dag结束>
start_date = datetime(2019, 1, 1)
end_date = datetime.now()+timedelta(seconds=200)
default_args = {
"owner": "airflow",
"depends_on_past": True,
"start_date": start_date,
"end_date": end_date
}
dag = DAG("file_dag", catchup=False, default_args=default_args, schedule_interval=timedelta(seconds=20), max_active_runs=1)
我希望dag在开始运行10或11次后停止运行。但是即使运行20次后它仍会继续执行,而且似乎没有停止。
答案 0 :(得分:0)
您在datetime.now()
和start_date
表达式中cannot / must not use end_date
您观察到的行为非常明显:
回想一下dag定义文件是在后台连续解析的。 第[6]节,限制DAG中的气流变量数量,Airflow: Lesser Known Tips, Tricks and Best Practices中说
您的DAG文件每隔X秒分析一次
在解析dag-definition文件的每个循环中,end_date
都会更新为当前时间后200秒。由于dag-definition-file(s)的解析将永远进行,因此end_date不断变化,您会得到 never-end dag