Airflow界面DAG持续失败,无错误日志显示求助
Airflow DAG运行失败且无日志的排查与修复
代码中的明显问题
你的DAG代码存在两处拼写/配置错误,可能直接导致任务异常:
- 重试参数拼写错误:
default_args中的'retried' : 1应为'retries',该参数控制任务失败后的重试次数,拼写错误会使配置不生效。 - 动态start_date问题:使用
pendulum.today('UTC').add(days= -2)会让每次DAG解析时start_date都动态变化,Airflow会将其识别为新DAG版本,引发调度逻辑混乱。建议改为固定的UTC日期,比如pendulum.datetime(2024, 5, 20, tz='UTC')。
修正后的核心代码片段:
default_args = { 'owner' : 'curtis', 'start_date' : pendulum.datetime(2024, 5, 20, tz='UTC'), # 改为固定日期 'depends_on_past' : False, 'email' : [''], 'email_on_failure' : True, 'email_on_retry' : True, 'retries' : 1, # 修正参数名 'retry_delay' : timedelta(minutes = 5) }
日志缺失的排查步骤
如果修正代码后仍无日志输出,按以下步骤排查:
- 检查日志目录权限:Airflow默认日志目录为
$AIRFLOW_HOME/logs,确保运行Airflow的用户对该目录有读写权限:# 查看目录权限 ls -ld $AIRFLOW_HOME/logs # 修复权限(假设运行用户为airflow) sudo chown -R airflow:airflow $AIRFLOW_HOME/logs - 验证Executor状态:
- 若使用默认
SequentialExecutor,确认Scheduler进程正常运行,未被意外终止; - 若使用
CeleryExecutor,检查Celery Worker是否启动,且与Broker(Redis/RabbitMQ)连接正常。
- 若使用默认
- 查看核心服务日志:检查Scheduler和Webserver的日志,路径通常为
$AIRFLOW_HOME/logs/scheduler和$AIRFLOW_HOME/logs/webserver,这些日志可能包含任务调度失败的细节。 - 确认任务实例状态:在Airflow UI中查看任务实例的具体状态,若任务一直处于
queued状态,可能是Executor资源不足或调度器未正确触发任务执行。
其他建议
- 测试时可将DAG的
schedule改为@once,避免调度周期影响测试; - 手动触发任务时,在UI中选择“Clear”后再重新触发,确保任务实例状态干净。
内容的提问来源于stack exchange,提问作者Curtis Wiser
相关产品推荐
相关产品推荐

