Чем WSGI отличается от ASGI?
- Что такое 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 — при вводе-выводе
Подробно
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 даёт выигрыш.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗WSGI — асинхронный интерфейс с WebSocket, ASGI — синхронный
- ✗ASGI работает только с Flask, WSGI — с FastAPI
- ✗Uvicorn — WSGI-сервер, Gunicorn — ASGI
- ✓WSGI — синхронный интерфейс, ASGI — асинхронный, с WebSocket
Разбор темы
- Веб на Python — WSGI и ASGI, FastAPI, HTTP-клиенты, JSON, Django ORM
Чем WSGI отличается от ASGI, простой API на FastAPI и внедрение зависимостей, requests и httpx с таймаутами, JSON с датами и деньгами, N+1 в Django.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.