Airflow DAG异常启动问题:Docker Compose启动后立即触发执行
问题原因分析
start_date早于当前系统时间:Airflow的核心调度逻辑是,当DAG被加载(比如Docker启动后初始化加载)时,会自动补跑
start_date到当前时间范围内所有未执行的调度任务。如果你的start_date(2024-03-04 09:55)早于启动Airflow时的实际时间,Airflow会判定该时间点的任务已逾期,因此启动后立刻触发执行。时区不匹配:如果你的
start_date未指定时区,而Airflow默认使用UTC时区,当本地时区与UTC存在时差时,可能导致你设置的时间在UTC时区下实际属于过去的时间。比如本地时区为东八区时,2024-03-04 09:55东八区对应UTC的2024-03-04 01:55,若当前UTC时间晚于该点,就会触发立即执行。schedule_interval配置问题:如果你的DAG将
schedule_interval设为@once或者极短的时间间隔(比如*/1 * * * *),即使start_date是过去的时间,也会触发立即执行。
解决建议
若希望DAG从
start_date开始按调度间隔执行,且不补跑历史任务,可在DAG定义中添加catchup=False参数:dag = DAG( 'your_dag_id', default_args=default_args, schedule_interval='@daily', catchup=False )确保
start_date的时区与Airflow配置一致,建议显式指定时区:from datetime import datetime import pendulum default_args = { # ...其他参数 'start_date': datetime(2024, 3, 4, 9, 55, 0, tzinfo=pendulum.timezone('Asia/Shanghai')) }确认
schedule_interval符合预期,避免设置过短的间隔或@once导致非预期的立即执行。
内容的提问来源于stack exchange,提问作者ensberg
相关产品推荐
相关产品推荐

