Выбор ответа Middle HTTP, WSGI и ASGI обновлено
Async-вьюхи Django под WSGI
Вопрос
Django-проект запущен под gunicorn (WSGI), во вьюхах async def. Что получится?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Работают, но запрос всё равно занимает воркер целиком. Django поддерживает async-вьюхи под WSGI: для каждого запроса он запускает цикл событий и ждёт результат, так что воркер всё равно занят целиком и добавляются накладные расходы.
Варианты ответа
- Django откажется запускаться и потребует ASGI
- Запросы начнут обрабатываться конкурентно в одном воркере
- Async-вьюхи автоматически переключат сервер на ASGI
- Работают, но запрос всё равно занимает воркер целикомправильный ответ
Разбор
Django поддерживает async-вьюхи под WSGI: для каждого запроса он запускает цикл событий и ждёт результат, так что воркер всё равно занят целиком и добавляются накладные расходы. Пользу async даёт только под ASGI-сервером (uvicorn, daphne, granian). Автоматического переключения сервера нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.