django celery AsyncResult AttributeError: у объекта DisabledBackend нет атрибута _get_task_meta_for - PullRequest
0 голосов
/ 15 января 2019

Я использую django celery (4.2), и я добавлю некоторую задачу из своего представления django, также я хочу получить асинхронный результат задачи в отдельном процессе, но когда я пытаюсь получить результат, я получил некоторые ошибки.

Мои полные шаги следующие:

  1. Конфигурация django celery:

проектируемый / Настройки / celery.py

import os
from celery import Celery
from django.conf import settings

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Nuwa.settings.development')

app = Celery('Nuwa')

app.config_from_object('django.conf:settings', namespace='CELERY')

app.autodiscover_tasks()

проектируемый / settings.py

CELERY_BROKER_URL = f'redis://{REDIS["HOST"]}:{REDIS["PORT"]}'
CELERY_RESULT_BACKEND = f'redis://{REDIS["HOST"]}:{REDIS["PORT"]}'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'

проектируемый / Настройки / INIT .py

from .celery import app as celery_app

__all__ = ('celery_app', )
  1. вызов задачи сельдерея в одном представлении django:
result = port_scan.delay(target)
redis_conn.sadd(celery_task_set_key, result.task_id)

на этом шаге я сохраняю task_id в наборе redis для будущего использования.

  1. получить результат задачи
redis_conn = redis.Redis(host=REDIS_HOST, port=REDIS_PORT)
celery_tasks = redis_conn.smembers('celery-tasks')


for task_id in celery_tasks:
    print(task_id)
    celery_result = AsyncResult(task_id)
    print(celery_result.state)

когда я пытаюсь получить результат, появляется ошибка:

AttributeError: 'DisabledBackend' object has no attribute '_get_task_meta_for'

Я пробую некоторые решения с помощью поиска в Google, и поэтому он не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...