Использование 'group()' привело к ошибке "No result backend is configured." в Django
В приведенном ниже коде я использую Celery 5.2.7 и django-celery-results в Django:
# "core/celery.py"
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings')
app = Celery('core')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
print(f'Request: {self.request!r}')
# "core/settings.py"
INSTALLED_APPS = [
# ...
'django_celery_results'
]
CELERY_RESULT_BACKEND = 'django-db'
CELERY_CACHE_BACKEND = 'django-cache'
# "store/tasks.py"
from celery import shared_task
@shared_task
def add(x, y):
return x + y
Затем, я запустил Celery с командой ниже:
celery -A core worker --pool=solo -l info
Затем, вызывается add.delay(3, 4)
в test() как показано ниже:
# "store/views.py"
from .tasks import add
from django.http import HttpResponse
def test(request):
add.delay(3, 4) # Here
return HttpResponse("Test")
Тогда, я смог правильно получить результат ниже:
Task store.tasks.add[...] succeeded in 0.04s: 7 # Here
Но при вызове group(add.delay(i, i) for i in range(10))().get()
в test(), как показано ниже:
# "store/views.py"
from celery import group
from django.http import HttpResponse
def test(request):
group(add.delay(i, i) for i in range(10))().get() # Here
return HttpResponse("Test")
Я получил ошибку ниже:
NotImplementedError: Не настроен бэкенд результатов. Пожалуйста, обратитесь к документацию для получения дополнительной информации.
Итак, я попробовал si()
как показано ниже:
# "store/views.py"
from celery import group
from django.http import HttpResponse
def call_test(request):
# ↓ Here
group(add.si(i, i) for i in range(10))().get()
return HttpResponse("Call_test")
Но, я все еще получаю ту же самую ошибку ниже:
NotImplementedError: Не настроен бэкенд результатов. Пожалуйста, обратитесь к документацию для получения дополнительной информации.
Итак, как я могу решить вышеуказанную ошибку, чтобы использовать group()
?