Apache Airflow(v2.7) DAG未在Webserver显示问题求助
Apache Airflow Docker部署问题解答
1. airflow-init-1容器状态为exited的说明
airflow-init是一次性初始化容器,它的作用是完成Airflow初始化工作(比如创建数据库表、初始化默认用户等),任务完成后会自动退出,这是正常现象。只要webserver、scheduler、triggerer、postgres这些核心容器处于running状态,就不影响Airflow正常使用,无需在意该容器的exited状态。
2. Web界面ALL标签旁数字53的含义
这个数字代表当前加载的DAG总数。你执行过删除默认卷的操作,可能是Airflow默认启用的示例DAG没关闭——默认配置下AIRFLOW__CORE__LOAD_EXAMPLES为true,会加载几十个官方示例DAG,数量刚好和53匹配。如果不需要示例DAG,可修改docker-compose.yml里的该配置为false,然后执行docker-compose down && docker-compose up -d重启容器即可清除这些示例DAG。
3. 让DAG显示并运行测试任务的步骤
先修正DAG代码的语法错误
你的代码存在多处语法问题,导致无法被Airflow识别,修正后的代码如下:
from airflow import DAG from datetime import datetime, timedelta from airflow.operators.bash import BashOperator # Airflow 2.x推荐使用该导入路径,旧版bash_operator仍可兼容 default_args = { "owner": "Q", "retries": 5, "retry_delay": timedelta(minutes=2) # retry_delay需使用timedelta而非datetime } with DAG( dag_id="first_dag", default_args=default_args, # 补上缺失的逗号 description="hopefully this works", start_date=datetime(2023, 8, 29), schedule_interval="@daily" ) as dag: task1 = BashOperator( task_id="1st_task", bash_command='echo "This is the 1st task completed"' # bash_command必须是合法shell命令,用echo输出文本 ) task1
部署并验证DAG
- 将修正后的DAG文件放到本地挂载到容器
/opt/airflow/dags的文件夹中(Docker部署的默认挂载目录) - 确认scheduler容器处于running状态,它会自动扫描dags目录加载新DAG
- 刷新Airflow Web界面,等待1-2分钟,
first_dag就会出现在DAG列表中 - 运行测试任务:
- 点击DAG列表中的
first_dag进入详情页 - 点击右上角的Play按钮,选择Trigger DAG w/ config直接触发
- 切换到Graph或Grid视图,查看任务运行状态,成功后可查看日志确认输出内容
- 点击DAG列表中的
关于代码中airflow的黄色波浪线
你本地pip安装的Airflow版本可能和Docker容器内的版本不一致,或是IDE未识别容器内的Python环境。无需在意该提示,只要代码语法正确,放到dags目录后Airflow就能正常识别。若要消除IDE提示,可配置IDE使用Docker容器内的Python解释器。
内容的提问来源于stack exchange,提问作者Qas
相关产品推荐
相关产品推荐

