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

Django配置Celery后台任务时报Module 'project_name' has no attribute 'celery'错误

问题根因排查
  1. celery配置文件位置错误:你将celery.py放在了app_name1目录下,但启动命令-A project_name会指定Celery去项目根模块/内层和settings.py同目录的project_name包下查找celery属性,自然找不到存放在app目录下的配置文件。
  2. 配置加载代码错误:celery.py中app.config_from_object('django.config:settings', namespace='CELERY')写法有误,Django的配置模块是django.conf不是django.config。
  3. 缺少实例导出配置:内层存放settings.py的project_name包没有对外暴露celery实例,Celery无法识别到对应的属性。
解决步骤
  • 第一步:调整celery.py存放位置,将app_name1/celery.py移动到和settings.py同目录的project_name文件夹下,调整后项目结构如下:
project_name
├──project_name
|  ├── __init__.py
|  ├── settings.py
|  └── celery.py
├──app_name1
├──app_name2
|  └──tasks.py
  • 第二步:修正celery.py中的配置加载代码:
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_name.settings')

app = Celery('project_name')
# 替换错误的django.config为django.conf
app.config_from_object('django.conf:settings', namespace='CELERY')

app.autodiscover_tasks()
  • 第三步:在内层project_name目录的__init__.py文件中添加如下代码,对外暴露celery实例:
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app

__all__ = ('celery_app',)
  • 第四步:确认settings.py的INSTALLED_APPS列表中已经注册了app_name2,否则Celery自动扫描任务时会找不到你定义的add任务。
  • 第五步:回到项目根目录(最外层的project_name目录),重新执行启动命令即可:
    celery -A project_name worker -l info --pool=solo

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:45:00