"TypeError: cannot unpack non-iterable AsyncResult object" при использовании Django?

Я использую Django с Celery для выполнения асинхронного вызова, который возвращает несколько значений. Однако при попытке распаковать эти переменные в моем представлении Django возникает вышеупомянутая ошибка TypeError. Вот что у меня есть на данный момент:

Релевантный код

views.py

def render_data(request):
    reddit_url = request.POST.get('reddit_url')
    sort = request.POST.get('sort')
    var1, var2 = celery_run.delay(reddit_url, sort)
    data = {
        'var1': var1,
        'var2': var2,
    }
    return JsonResponse(data)

tasks.py

@shared_task
def celery_run(reddit_url, sort):
    var1, var2 = run_data(reddit_url, sort)
    return var1, var2

Ожидаемый результат против фактического

Идеально, функция правильно распакует объект, и каждой переменной будет присвоено соответствующее значение из функции. Вместо этого я получаю ошибку типа, указывающую на то, что я не могу распаковать асинхронные объекты. Я не совсем уверен, но это потому, что я пытаюсь распаковать из функции, которая все еще выполняется?

Что я пробовал

  1. Unpacking variables within tasks.py instead in views.py, did absolutely nothing but I prayed
  2. Followed the solution from TypeError: cannot unpack non-iterable NoneType object but unfortunately extra indents makes my code work less

Если бы я мог получить любую информацию о том, что вызывает эту ошибку и лучший метод для решения этой проблемы, я был бы благодарен. Спасибо!

Вернуться на верх