Встречается на собеседованиях • сегодня
Как реализовать асинхронность в Django
Для асинхронности в Django (3.1+) можно использовать ASGI вместо WSGI и async views. Основные подходы:
- ASGI-приложение:
python
# asgi.py
from django.core.asgi import get_asgi_application
application = get_asgi_application()- 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()
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы