Встречается на собеседованиях • сегодня
Можно ли сделать функции представления асинхронными в Django
Да, в Django можно создавать асинхронные view-функции, начиная с версии 3.1. Для этого нужно использовать ключевое слово async def вместо обычного def. Однако есть важные ограничения:
- ORM Django (запросы к БД) не является асинхронным по умолчанию. Для асинхронных запросов нужно использовать
sync_to_asyncизdjango.core.async_utilsили дожидаться Django 4.1+ с нативной async ORM поддержкой.
- Middleware должно поддерживать async (либо быть async-совместимым).
Пример асинхронного представления:
python
from django.http import JsonResponse
async def my_async_view(request):
import asyncio
await asyncio.sleep(1)
return JsonResponse({'status': 'ok'})Для смешанного sync/async кода можно использовать:
python
from asgiref.sync import sync_to_async
@sync_to_async
def get_sync_data():
return SomeModel.objects.all()
async def hybrid_view(request):
data = await get_sync_data()
return JsonResponse({'data': list(data.values())})
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы