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

Apache Airflow DockerSwarmOperator任务执行完成后持续卡在Running状态的解决求助

Apache Airflow DockerSwarmOperator任务执行完成后持续卡在Running状态的解决求助

大家好,我最近在使用Airflow结合DockerSwarmOperator在Docker Swarm集群中运行任务时碰到了一个棘手的问题:当DockerSwarmOperator对应的容器已经运行完成并退出后,Airflow界面里的任务却始终停留在Running状态,不会自动切换为成功状态。

以下是我的相关配置信息:

docker-compose.yml 配置

version: '3.7'

x-airflow-common:
  &airflow-common
  image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:latest}
  environment:
    &airflow-common-env
    AIRFLOW__CORE__EXECUTOR: CeleryExecutor
    AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: mysql+mysqldb://root:123456@mysql:3306/airflow?sql_mode=ALLOW_INVALID_DATES
    AIRFLOW__CORE__SQL_ALCHEMY_CONN: mysql+mysqldb://root:123456@mysql:3306/airflow?sql_mode=ALLOW_INVALID_DATES
    AIRFLOW__CORE__FERNET_KEY: ''
    AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: 'true'
    AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
    AIRFLOW__API__AUTH_BACKENDS: 'airflow.api.auth.backend.basic_auth,airflow.api.auth.backend.session'
    AIRFLOW__SCHEDULER__ENABLE_HEALTH_CHECK: 'true'
    AIRFLOW__SCHEDULER__SCHEDULE_AFTER_TASK_EXECUTION: 'true'
    AIRFLOW__CELERY__BROKER_URL: amqp://root:1234@rabbitmq:5672//
    AIRFLOW__CELERY__RESULT_BACKEND: redis://redis:6379/0
    AIRFLOW__WEBSERVER__SECRET_KEY: '8985edffbc5fae34c5a93aa580fb935675c87e568a83c6bbca98b4f9d93f3b50'
    AIRFLOW__WEBSERVER__SECRET_KEY_CMD: 'uuidgen'
    _PIP_ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:-}
  volumes:
    - ${AIRFLOW_PROJ_DIR:-.}/dags:/opt/airflow/dags
    - ${AIRFLOW_PROJ_DIR:-.}/logs:/opt/airflow/logs
    - ${AIRFLOW_PROJ_DIR:-.}/plugins:/opt/airflow/plugins
    - /var/run/docker.sock:/var/run/docker.sock
  user: "${AIRFLOW_UID:-50000}:0"
  networks:
    my-network:
      external: true

services:
  airflow-webserver:
    <<: *airflow-common
    command: webserver
    ports:
      - "6969:8080"
    restart: always
    networks:
      - my-network
    deploy:
      replicas: 1
      placement:
        constraints: [ node.role == manager ]

  airflow-scheduler:
    <<: *airflow-common
    command: scheduler
    restart: always
    networks:
      - my-network
    deploy:
      replicas: 1
      placement:
        constraints: [ node.role == manager ]

  airflow-worker:
    <<: *airflow-common
    command: celery worker
    restart: always
    networks:
      - my-network
    deploy:
      replicas: 1
      placement:
        constraints: [ node.role == manager ]

对应的DAG代码

import airflow
from airflow import DAG
from airflow.contrib.operators.docker_swarm_operator import DockerSwarmOperator
from datetime import datetime

default_args = {
    'owner': 'airflow',
    'start_date': datetime(2023, 5, 29),
    'email': ['airflow@sample.com'],
    'email_on_failure': True,
    'email_on_retry': False
}

dag = DAG(
    'docker_swarm_sample',
    default_args=default_args,
    schedule_interval='@daily',
    catchup=False
)

with dag as dag:
    t1 = DockerSwarmOperator(
        api_version='auto',
        command='/bin/sleep 45',
        image='192.168.12.50:5000/web',
        auto_remove=True,
        task_id='sleep_with_swarm',
    )

我已经检查了Airflow容器的权限设置(比如挂载的/var/run/docker.sock权限),也查看了Airflow的日志文件,但没有找到任何报错信息。实在搞不懂为什么任务不能正常结束,有没有朋友遇到过类似的问题,或者能给我一些排查方向?

备注:内容来源于stack exchange,提问作者Ata Attarian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 13:38:11