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

Docker重建后Django无法从celery导入Celery的问题求助

Django + Celery Docker重建后导入Celery失败问题排查

问题描述

原本在Docker中运行正常的Django+Celery项目,重建镜像并重启后,Celery无法启动,出现导入错误,核心报错如下:

v_web            | ImportError: cannot import name 'Celery' from 'celery' (/usr/local/lib/python3.7/site-packages/celery/__init__.py)

项目相关信息

  • 项目结构:
notifications
   notification
      __init__.py
      celery.py
  • __init__.py内容:
from .celery import app as celery_app
__all__ = ("celery_app",)
  • celery.py内容:
import os
from celery import Celery

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "notification.settings")

app = Celery("notification")
app.config_from_object("django.conf:settings", namespace="CELERY")
app.autodiscover_tasks()
  • docker-compose.yml、Dockerfile、requirements.txt内容见原提问。

排查与解决步骤

1. 强制清理Docker缓存,重新构建镜像

重建镜像时可能复用了旧的缓存层,导致Celery包未正确安装。执行以下命令强制重新构建:

docker-compose build --no-cache
docker-compose up -d

2. 修改Dockerfile,确保依赖安装完整

在pip install命令中添加--no-cache-dir参数,避免pip使用缓存的安装包,确保Celery完整安装:

# syntax=docker/dockerfile:1
FROM python:3.7
WORKDIR /app
COPY . /app/
RUN pip install --no-cache-dir -r requirements.txt

3. 验证Celery包在容器内的完整性

进入web或celery容器,检查Celery包是否正常:

# 进入容器
docker exec -it v_web bash

# 进入Python交互环境,测试导入
python
>>> from celery import Celery
>>> Celery  # 如果能输出类信息则正常

如果导入失败,手动重新安装Celery:

pip uninstall -y celery
pip install celery==5.1.2

4. 检查依赖版本兼容性

确认requirements.txt中的依赖版本是否兼容:

  • Celery 5.1.2与Python3.7兼容,但需确保django-celery-beat版本与Celery匹配。可以尝试固定django-celery-beat版本为2.2.0(与Celery5.1.x兼容):
django-celery-beat==2.2.0

5. 排除命名冲突(虽然之前正常,但重建后可能触发)

项目中notification/celery.py文件名与Celery包名同名,理论上不会冲突(因为是相对导入),但可以尝试临时重命名测试:

  • 将celery.py改为celery_app.py
  • 修改__init__.py中的导入:
from .celery_app import app as celery_app
  • 修改celery命令中的参数:celery -A notification.celery_app worker -l info --concurrency 4
  • 重新构建镜像测试,如果问题解决则说明存在命名冲突触发的缓存问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:05:25