Hardwsgiasgi
Чем WSGI от ASGI отличается?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
WSGI (PEP 3333, 2010) — synchronous interface. Один запрос — один поток/процесс. ASGI (2018) — asynchronous, поддерживает WebSockets, HTTP/2, long-lived connections. Несколько requests в одном event loop.
# WSGI — synchronous callable
def app(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
return [b'hello']
# ASGI — async callable
async def app(scope, receive, send):
await send({'type': 'http.response.start', 'status': 200})
await send({'type': 'http.response.body', 'body': b'hello'})- WSGI серверы: Gunicorn, uWSGI; ASGI: Uvicorn, Daphne, Hypercorn;
- WSGI не может WebSockets без хаков; ASGI может;
- Django 3.0+ имеет ASGI; Flask — WSGI; FastAPI/Starlette/Sanic — ASGI-native;
- Production FastAPI: Gunicorn + Uvicorn workers;
- Для high-concurrency I/O (тысячи WS connections, long polling) — ASGI выигрывает.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.