Celery启动时报ModuleNotFoundError:无法找到Django的blogger模块求助
解决Celery启动时的ModuleNotFoundError问题
核心原因与修复步骤
- 执行命令的目录错误:你当前在
blogger目录下执行celery -A blogger.celery worker,Python会在当前目录下查找blogger模块,但当前目录本身就是blogger,自然找不到。需要回到项目根目录(即包含blogger文件夹的上层目录)执行命令。
正确命令:celery -A blogger.celery worker
代码中的其他错误修复
除了目录问题,代码里还有几处语法/拼写错误,需同步修正:
1. celery.py 修正
- 缺少
os模块导入,需添加; - 存在代码行连写问题,拆分后确保语法正确。
修正后的完整代码:
import os from celery import Celery from django.conf import settings os.environ.setdefault("DJANGO_SETTINGS_MODULE", "blogger.settings") app = Celery('blogger') app.conf.enable_utc = False app.conf.update(timezone='Asia/kolkata') app.config_from_object(settings, namespace='CELERY')
2. init.py 修正
all应为__all__(双下划线),这是Python导出模块的标准写法:
from .celery import app as celery_app __all__ = ('celery_app', )
3. 文件名修正
- 设置文件名应为
settings.py(Django默认约定),你当前的setting.py少了一个s,需重命名。
4. settings.py 格式修正
- 所有配置行连写在一起,拆分后避免潜在语法问题,提高可读性:
CELERY_BROKER_URL = 'redis://127.0.0.1:6379' CELERY_ACCEPT_CONTENT = ['application/json'] CELERY_RESULT_SERIALIZER = 'json' CELERY_TASK_SERIALIZER = 'json' CELERY_TIMEZONE = 'Asia/kolkata' CELERY_RESULT_BACKEND = 'django-db' CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'
验证步骤
- 切换到项目根目录(目录结构应为
根目录/blogger/) - 确认所有代码错误已修正
- 重新执行启动命令:
celery -A blogger.celery worker
内容的提问来源于stack exchange,提问作者Developer7
相关产品推荐
相关产品推荐

