Celery + Django报错ModuleNotFoundError: No module named 'celery.backends.amqp'求解决
可能的问题原因分析
依赖版本兼容性冲突:Celery 5.2.7 与 amqp 5.1.1 存在版本适配问题。Celery 5.2.x 系列官方推荐的 amqp 版本上限为 5.1.0,更高版本的 amqp 可能引入了 Celery 未兼容的API变更,导致初始化或运行时抛出错误。建议修改 requirements.txt,将 amqp 锁定为
amqp==5.0.9,重新执行pip install -r requirements.txt后测试。Django 版本不匹配:Celery 5.2.7 对 Django 的兼容范围为 2.2 ~ 4.0 版本。如果你的 Django 版本不在这个区间,无论是过高还是过低,都可能和 Celery 的配置逻辑、内部调用产生冲突。
配置细节遗漏:
- 检查项目根目录的
celery.py,是否正确设置环境变量os.environ.setdefault('DJANGO_SETTINGS_MODULE', '你的项目名.settings'),且调用了django.setup()方法。 - 确认
settings.py中的CELERY_BROKER_URL配置正确,比如 RabbitMQ 连接格式应为amqp://用户名:密码@主机地址:端口//,缺失认证信息或地址错误会直接导致连接失败。 - 检查项目根目录的
__init__.py,是否导入了 Celery 实例(from .celery import app as celery_app),确保 Django 启动时能加载 Celery 配置。
- 检查项目根目录的
运行环境或命令错误:
- 运行 Celery 命令时,需确保处于项目对应的虚拟环境中,避免全局环境和虚拟环境的依赖版本混淆。
- 确认启动 worker 的命令格式正确:
celery -A 你的项目名 worker --loglevel=info,替换其中的「你的项目名」为实际项目名称。
内容的提问来源于stack exchange,提问作者Alejandro Veintimilla
相关产品推荐
相关产品推荐

