django with芹菜错误:没有配置结果后端



我的版本:Django = = 3.2芹菜= = 5.1.2

我settings.local:CELERY_RESULT_BACKEND ="复述://@127.0.0.1:6379/1">

celery.py:

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
from django.conf import settings
# # 设置环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cmdb.settings.local')
# 实例化
# app = Celery('celeryPro', include=['message.tasks'])
app = Celery('celeryPro', backend='redis://127.0.0.1:6379/1')
# app = Celery('cmdb')
# namespace='CELERY'作用是允许你在Django配置文件中对Celery进行配置
# 但所有Celery配置项必须以CELERY开头,防止冲突
app.config_from_object('django.conf:settings', namespace='CELERY')
# app.config_from_object(config, namespace='CELERY')
# 自动从Django的已注册app中发现任务
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

@app.task(bind=True)
def debug_task(self):
print('Request:{0!r}'.format(self.request))

总是得到错误

您的设置在两个方面不正确。

  1. 仅在创建芹菜实例时添加backend也调用config_from_object,根据文档,之前的任何配置都将被重置。
  2. 传递给config_from_object方法的配置文件不正确。您需要发送芹菜应该使用的文件和而不是Django使用的。你可以在配置文档中找到更多信息。

作为一个例子,您可以按照如下方式配置您的celery.py文件:

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
from django.conf import settings
# # 设置环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cmdb.settings.local')
# 实例化
# app = Celery('celeryPro', include=['message.tasks'])
# app = Celery('celeryPro', backend='redis://127.0.0.1:6379/1')
app = Celery('cmdb')
# namespace='CELERY'作用是允许你在Django配置文件中对Celery进行配置
# 但所有Celery配置项必须以CELERY开头,防止冲突
app.config_from_object('celery_config', namespace='CELERY')
# app.config_from_object(config, namespace='CELERY')
# 自动从Django的已注册app中发现任务
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

@app.task(bind=True)
def debug_task(self):
print('Request:{0!r}'.format(self.request))

和你的celery_config.py文件可以像下面这样:

broker_url = 'redis://localhost:6379/1'
result_backend = 'redis://localhost:6379/1'

将芹菜的配置放在另一个文件中,当你想扩展配置时,可以获得更大的灵活性。

注意-您应该将celery_config.py文件保存在项目的根目录中,即与manage.py文件在相同的位置。

最新更新