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