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

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'

验证步骤

  1. 切换到项目根目录(目录结构应为根目录/blogger/)
  2. 确认所有代码错误已修正
  3. 重新执行启动命令:celery -A blogger.celery worker

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:20:08