You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

  1. 将修正后的DAG文件放到本地挂载到容器/opt/airflow/dags的文件夹中(Docker部署的默认挂载目录)
  2. 确认scheduler容器处于running状态,它会自动扫描dags目录加载新DAG
  3. 刷新Airflow Web界面,等待1-2分钟,first_dag就会出现在DAG列表中
  4. 运行测试任务:
    • 点击DAG列表中的first_dag进入详情页
    • 点击右上角的Play按钮,选择Trigger DAG w/ config直接触发
    • 切换到Graph或Grid视图,查看任务运行状态,成功后可查看日志确认输出内容

关于代码中airflow的黄色波浪线

你本地pip安装的Airflow版本可能和Docker容器内的版本不一致,或是IDE未识别容器内的Python环境。无需在意该提示,只要代码语法正确,放到dags目录后Airflow就能正常识别。若要消除IDE提示,可配置IDE使用Docker容器内的Python解释器。


内容的提问来源于stack exchange,提问作者Qas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 09:02:16