Django集成Celery报No result backend is configured错误求助
问题根因
- 配置加载顺序错误:在设置
DJANGO_SETTINGS_MODULE环境变量之前提前导入了django.conf.settings,导致Django未读取settings.local中的Celery配置,后续app.config_from_object加载的配置中不含CELERY_RESULT_BACKEND,直接覆盖了Celery实例化时传入的backend参数。 - 配置冲突冗余:同时在Celery实例化参数和Django配置文件中定义result_backend,优先级规则导致出现预期外的覆盖。
修复步骤
- 调整导入顺序,将环境变量设置代码放到导入
django.conf.settings之前,修正后celery.py开头代码如下:
from __future__ import absolute_import, unicode_literals import os # 优先设置Django配置模块环境变量 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cmdb.settings.local') from celery import Celery from django.conf import settings
- 移除Celery实例化时冗余的backend参数,统一走Django配置文件加载,避免优先级冲突:
# 移除backend参数,后续从Django配置统一读取 app = Celery('celeryPro')
- 修正
settings.local中CELERY_RESULT_BACKEND的写法,无密码的Redis不需要加多余的@符号:
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/1'
- 完全重启Celery worker进程,所有Celery配置修改都需要重启worker后才能生效。
验证方式
调用测试任务检查配置是否生效:
from xxx.celery import debug_task task_result = debug_task.delay() # 正常返回无报错即配置生效 print(task_result.get())
内容的提问来源于stack exchange,提问作者xishi
相关产品推荐
相关产品推荐

