从Airflow 1.1升级到2.0后Docker部署任务无法执行问题求助
Airflow 2.x 升级后CeleryExecutor不生效报错解决方案
错误核心原因为Airflow运行时实际加载的执行器为默认的SequentialExecutor,和配置声明的CeleryExecutor不匹配,结合提供的配置,按以下步骤修复即可:
- 修正Redis连接配置
你在redis服务中配置了访问密码,但Celery broker连接地址未携带密码,导致Celery组件初始化失败,执行器回退为默认的SequentialExecutor。将AIRFLOW__CELERY__BROKER_URL配置修改为:
密码需和你AIRFLOW__CELERY__BROKER_URL: redis://:redispass@redis:6379/0redis.env中配置的密码保持一致。 - 清理重复目录挂载
你的公共配置volumes字段重复挂载了dags、logs、plugins目录,后挂载的./airflow/前缀路径会覆盖前面的自定义路径,容易引发配置加载异常。删除重复的3行挂载配置即可:# 删掉以下3行重复配置 - ./airflow/dags:/opt/airflow/dags - ./airflow/logs:/opt/airflow/logs - ./airflow/plugins:/opt/airflow/plugins - 清除旧版本元数据残留
从1.x版本升级后,旧的元数据库中可能残留历史执行器配置,会覆盖环境变量的配置。进入airflow-webserver容器执行以下命令完成数据库迁移:
迁移完成后执行airflow db upgradeairflow config get-value core executor,确认返回值为CeleryExecutor。 - 重启服务生效配置
所有配置修改完成后,执行以下命令清理旧容器缓存并重启服务:
注意docker-compose down -v docker-compose up -d-v参数只会删除docker-compose声明的匿名卷,不会删除你本地挂载的dags、数据库等持久化文件。 - 验证修复结果
服务启动完成后,进入Airflow Web控制台,依次点击「Admin」-「Configurations」,搜索core.executor,确认值为CeleryExecutor,此时运行测试任务即可正常调度。
内容的提问来源于stack exchange,提问作者Rhonald
相关产品推荐
相关产品推荐

