Airflow DAG硬编码datetime后始终无法自动调度运行如何排查
Airflow DAG 未按计划自动触发的排查方向
- DAG 元数据缓存问题
修改start_date后未更换DAG的dag_id,Airflow元数据库会留存原有dag_id的历史调度记录,判定该DAG已经按照旧配置完成过调度计算,不会基于新的start_date重新生成调度任务。可以尝试将dag_id修改为新值(比如instagram_v2),重新上传DAG文件验证。 catchup参数规则限制
你配置了catchup=False,该参数会关闭历史任务补跑逻辑,仅会调度当前时间之后的首个符合schedule_interval的运行实例。如果你修改的start_date对应的所有调度时间都早于当前时间,Airflow不会触发任何历史任务,只会等待下一个还未到达的9点05分的时间窗口才会自动触发。- 时区不匹配
Airflow默认使用UTC时区计算调度时间,你设置的5 9 * * *为UTC时区的每日9点05分,如果你预期的是国内时区(比如北京时间)的9点05分,对应的UTC时间是1点05分,会导致实际调度时间和预期不符。可以在DAG参数中增加timezone='Asia/Shanghai'指定时区,修正调度时间计算逻辑。 - 顶层代码阻塞DAG解析
你将token = get_token()这段代码放在了DAG定义的顶层,没有封装到Operator内部,Airflow调度器每次扫描DAG文件时都会执行这段代码,如果get_token()执行耗时过长、偶发请求失败、出现异常,会导致DAG文件解析失败,调度器无法识别到合法的调度配置。手动触发时刚好赶上代码解析成功的节点就可以正常运行,建议将这类业务逻辑迁移到PythonOperator内部执行,避免阻塞DAG解析流程。 - 调度器状态异常
确认Airflow调度器服务处于正常运行状态,调度器日志中没有对应DAG的解析报错、权限报错等问题,同时确认DAG在Airflow UI中处于开启(Unpaused)状态。
内容的提问来源于stack exchange,提问作者Lucas Saito
相关产品推荐
相关产品推荐

