Airflow中未归属任务的print语句输出位置咨询
Airflow DAG中顶层print语句的输出位置说明
你的代码里print(group1)属于DAG定义的顶层代码,它的执行和输出逻辑和任务内部的代码完全不同,具体如下:
执行时机
这条print语句不会在任何任务运行时执行,而是在Airflow调度器周期性解析DAG文件时运行(默认调度器每30秒会重新扫描并解析所有DAG文件)。
输出位置
print的内容会直接写入Airflow调度器的日志,而非某个任务的日志。查看路径取决于你的部署方式:
- 本地单机部署:默认日志路径为
$AIRFLOW_HOME/logs/scheduler,日志文件按日期命名 - 容器化部署(Docker/Kubernetes):需要查看调度器容器/ Pod的日志,比如用
docker logs <scheduler-container-id>(Docker)或kubectl logs <scheduler-pod-name>(K8s)
是否能查看
可以查看,但无法通过Airflow UI获取——你需要直接访问调度器所在的服务器或容器,读取对应的日志文件或日志流。
关键区别
要明确两种代码的执行上下文差异:
- 任务内部代码(比如
my_function里的print("hello")):运行在任务进程中,输出会出现在Airflow UI对应的任务日志里 - DAG顶层代码(如
print(group1)、TaskGroup实例化):运行在调度器进程中,输出仅存在于调度器日志中
内容的提问来源于stack exchange,提问作者PratikRathi
相关产品推荐
相关产品推荐

