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

Airflow 3.1 CeleryExecutor任务卡在队列无法执行问题求助

Airflow 3.1 CeleryExecutor任务卡在队列不执行排查方案

核心排查方向

以下是针对Docker Compose环境下任务卡队列问题的逐一验证步骤:

1. 确认队列监听一致性

Airflow默认将任务发送至default队列,需确保:

  • 调度器容器的AIRFLOW__CELERY__DEFAULT_QUEUE配置与worker完全一致(默认均为default,若自定义过队列需同步配置)
  • 若DAG中任务指定了非默认队列(如task = PythonOperator(..., queue='order_queue')),需修改worker启动命令为celery worker -Q default,order_queue,确保worker监听对应队列

2. 验证Redis连通性与任务队列状态

进入worker容器执行命令,确认任务是否真的进入队列:

# 测试Redis连接可用性
redis-cli -h redis ping
# 查看Celery队列中的任务数量
redis-cli -h redis llen celery
  • 若llen celery返回大于0的数值,说明任务已进入队列但worker未消费;若返回0,说明调度器未将任务推送至队列,需排查调度器配置

3. 检查PostgreSQL结果后端连接

进入worker容器测试Postgres连接权限:

psql -h postgres -U airflow -d airflow

输入密码airflow后,若能正常进入数据库则连接正常;若报错,需检查Postgres的用户权限、容器网络映射或端口配置

4. 确保全局配置一致性

调度器、webserver、worker的核心配置必须完全同步,尤其是以下项:

AIRFLOW__CORE__EXECUTOR=CeleryExecutor
AIRFLOW__CELERY__BROKER_URL=redis://redis:6379/0
AIRFLOW__CELERY__RESULT_BACKEND=db+postgresql://airflow:airflow@postgres/airflow

进入任意容器执行airflow config list,确认上述配置未被本地airflow.cfg文件或其他环境变量覆盖

5. 排查元数据库任务状态

进入Postgres容器查询任务实例状态:

SELECT task_id, state, queue, executor FROM task_instance WHERE state = 'queued';

需确认:

  • executor字段值为CeleryExecutor
  • queue字段与worker监听的队列完全匹配

6. 检查调度器日志

调度器负责推送任务至队列,重点查看日志中是否存在:

  • 任务调度成功的日志(如Sent task <task_id> to queue <queue_name>)
  • Redis/Postgres连接报错(如认证失败、连接超时)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 06:42:38