Встречается на собеседованиях • сегодня

Как реализовать асинхронность в Django

Для асинхронности в Django (3.1+) можно использовать ASGI вместо WSGI и async views. Основные подходы:

  1. ASGI-приложение:
python
# asgi.py
from django.core.asgi import get_asgi_application
application = get_asgi_application()
  1. Async views:
python
from django.http import JsonResponse
from asgiref.sync import sync_to_async

async def my_view(request):
data = await sync_to_async(SomeModel.objects.filter)(...)
return JsonResponse({'data': list(data)})

text

3. Для работы с БД используйте `sync_to_async` или ORM-обертки типа `database_sync_to_async`. ORM Django пока не полностью асинхронна.

Важно:
- Не все middleware поддерживают async
- Тестирование требует async-клиента
- Лучше смешивать sync/async код постепенно
- Для production нужен ASGI-сервер (Daphne, Uvicorn)

Пример async/await с внешними API:
```python
async def fetch_data():
    async with aiohttp.ClientSession() as session:
        async with session.get('https://api.example.com') as resp:
            return await resp.json()
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы