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

Celery启动worker报错ModuleNotFoundError: No module named 'mysite'

报错根因

错误栈最终抛出ModuleNotFoundError: No module named 'mysite',核心原因是Celery初始化时加载Django配置的路径配置错误,指向了不存在的mysite项目,而你实际的项目名为myproject,导致模块导入失败。

排查思路
  • 从错误栈定位故障阶段:错误发生在Django初始化加载settings配置环节,和RabbitMQ连接、任务代码逻辑无关,优先排查Celery实例的初始化配置、Django settings模块路径配置
  • 检查项目根目录下myproject/celery.py(Celery实例初始化文件,你未提供该文件内容,是故障高发点)中DJANGO_SETTINGS_MODULE的取值是否正确
  • 检查启动环境是否有残留的旧配置:包括系统环境变量、虚拟环境激活脚本、项目env文件中是否错误配置了DJANGO_SETTINGS_MODULE=mysite.settings
  • 检查Celery启动时的工作目录:确认执行启动命令的路径是包含manage.py的项目根目录,而非其他层级目录
修复步骤
  1. 修正/补全myproject/celery.py配置
    该文件是Celery的核心初始化文件,必须正确指定Django配置路径,参考正确配置如下:
    import os
    from celery import Celery
    
    # 关键:指定Django settings模块路径为实际项目名myproject,禁止写不存在的mysite
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
    
    app = Celery('myproject')
    # 从Django settings中读取所有以CELERY开头的配置项
    app.config_from_object('django.conf:settings', namespace='CELERY')
    # 自动发现所有已注册Django app下的tasks.py任务
    app.autodiscover_tasks()
    
  2. 校验myproject/__init__.py配置
    你当前提供的该文件配置正确,无需修改,保持如下内容即可:
    from .celery import app as celery_app
    
    __all__ = ('celery_app',)
    
  3. 清理环境残留配置
    • 全局搜索项目部署环境中所有DJANGO_SETTINGS_MODULE相关配置,将指向mysite.settings的项全部修改为myproject.settings
    • 切换到包含manage.py的项目根目录下再执行Celery启动命令
  4. 前置依赖校验
    你配置了CELERY_RESULT_BACKEND = 'django-db',启动前需要先完成对应配置:
    # 先安装依赖
    pip install django-celery-results
    
    把django_celery_results加到settings.py的INSTALLED_APPS列表中,再执行数据库迁移生成结果存储表:
    python manage.py migrate
    
  5. 启动验证
    执行启动命令celery -A myproject worker -l info,看到Celery启动日志中正常打印RabbitMQ连接信息、已注册任务列表包含app.tasks.send_email_task,即为修复成功。

补充:你提供的邮件任务代码逻辑无语法问题,修复启动故障后即可正常调用。

内容的提问来源于stack exchange,提问作者Himanshu Poddar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:18:33