Выбор ответа Middle HTTP, WSGI и ASGI обновлено

Async-вьюхи Django под WSGI

Вопрос

Django-проект запущен под gunicorn (WSGI), во вьюхах async def. Что получится?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Работают, но запрос всё равно занимает воркер целиком. Django поддерживает async-вьюхи под WSGI: для каждого запроса он запускает цикл событий и ждёт результат, так что воркер всё равно занят целиком и добавляются накладные расходы.

Варианты ответа

  1. Django откажется запускаться и потребует ASGI
  2. Запросы начнут обрабатываться конкурентно в одном воркере
  3. Async-вьюхи автоматически переключат сервер на ASGI
  4. Работают, но запрос всё равно занимает воркер целикомправильный ответ

Разбор

Django поддерживает async-вьюхи под WSGI: для каждого запроса он запускает цикл событий и ждёт результат, так что воркер всё равно занят целиком и добавляются накладные расходы. Пользу async даёт только под ASGI-сервером (uvicorn, daphne, granian). Автоматического переключения сервера нет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.