Python, Django: Попытка понять async_views (Django > 3.0)

Сейчас я пытаюсь понять, как вызвать две модели с помощью python/django async. Поэтому я нашел в интернете объяснение, которое вроде бы работает, но все равно выдает ошибку в команде.

models.py

class Movies(models.Model):
    name = models.CharField(max_length=50, null=False, blank=False, unique=True)

class Series(models.Model):
    name = models.CharField(max_length=50, null=False, blank=False, unique=True)

functions.py

from .models import Movies, Series
import asyncio
from asgiref.sync import sync_to_async


@sync_to_async
def get_movies_async():
    asyncio.sleep(2)
    qs = Movies.objects.all()
    print(qs)


@sync_to_async
def get_series_async():
    asyncio.sleep(5)
    qs = Series.objects.all()
    print(qs)

views.py

from django.http import HttpResponse
import asyncio, time
from .functions import get_movies_async, get_series_async


async def index(request):
    start_time = time.perf_counter()    

    await asyncio.gather(get_movies_async(), get_series_async())

    print(f"Estimated time: {time.perf_counter() - start_time}")
    return HttpResponse("Index view")

Согласно объяснению, я должен получить данные примерно через 5 секунд, но вместо этого данные загружаются гораздо меньше секунды (0.009...что-то), и я получаю два RuntimeWarnings:

RuntimeWarning: coroutine 'sleep' was never awaited

RuntimeWarning: Enable tracemalloc to get the object allocation traceback

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

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