Получить доступ

Чем WSGI отличается от ASGI?

MiddleВеб-фреймворкиDjangoFastAPIFlask
Ещё спрашивают так:
  • Что такое Gunicorn и Uvicorn?
  • Почему FastAPI асинхронный, а классический Django — нет?
Коротко

WSGI — синхронный интерфейс между веб-сервером и приложением: один запрос занимает один поток или процесс до ответа (Flask, Django). ASGI — асинхронный: приложение — корутина, один процесс обслуживает тысячи соединений через event loop, поддерживаются WebSocket и долгие соединения (FastAPI, Starlette, Django в режиме ASGI).

  • WSGI-серверы: Gunicorn, uWSGI; ASGI: Uvicorn, Hypercorn, Granian
  • Gunicorn с воркерами Uvicorn — процессы для ядер, event loop внутри каждого
  • ASGI не ускоряет CPU-код и бесполезен с блокирующими библиотеками

А ещё Число воркеров обычно около числа ядер; потоки для WSGI — при вводе-выводе

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

WSGI (PEP 3333): приложение — вызываемый объект app(environ, start_response), который возвращает тело ответа. Синхронный по природе: пока обработчик ждёт базу, процесс или поток занят. Масштаб — число воркеров × потоков.

ASGI: приложение — корутина app(scope, receive, send), общается с сервером событиями. Позволяет держать WebSocket, server-sent events, долгие запросы без отдельного потока на каждый.

Развёртывание:

  • Django/Flask: gunicorn app:wsgi -w 4 --threads 8;
  • FastAPI: uvicorn app:app --workers 4 или Gunicorn с -k uvicorn.workers.UvicornWorker.

Когда ASGI действительно выигрывает: много одновременных медленных внешних вызовов, WebSocket, стриминг — и весь стек асинхронный (asyncpg, httpx). Если внутри синхронный ORM, выигрыша нет, а риск заблокировать цикл — есть.

Что хотят услышать

  • Синхронный и асинхронный интерфейс.
  • Серверы и как их запускают.
  • Когда ASGI даёт выигрыш.

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем