Ответ
WSGI (Web Server Gateway Interface) — это стандартный интерфейс, который определяет, как веб-сервер взаимодействует с веб-приложениями, написанными на Python. Он обеспечивает унифицированный способ передачи HTTP-запросов от сервера к приложению.
Ключевые задачи, которые решает WSGI:
- Портативность: Приложение, написанное с соблюдением стандарта WSGI, может работать с любым WSGI-совместимым сервером (Gunicorn, uWSGI, mod_wsgi) без изменений в коде.
- Разделение ответственности: Веб-сервер (например, Nginx) отвечает за обработку сетевых соединений, а WSGI-сервер — за управление процессами Python и передачу им запросов.
- Простота: Стандарт определяет простой
callableобъект (функцию или класс) в качестве точки входа в приложение.
Схема работы:
Клиент <-> Веб-сервер (Nginx) <-> WSGI-сервер (Gunicorn) <-> Python-приложение (Django, Flask)
Пример минимального WSGI-приложения:
# Это приложение может быть запущено любым WSGI-сервером
def application(environ, start_response):
# environ: словарь с переменными запроса
# start_response: функция для отправки HTTP-статуса и заголовков
status = '200 OK'
headers = [('Content-Type', 'text/plain')]
start_response(status, headers)
return [b'Hello, WSGI!']
Современным асинхронным преемником WSGI является ASGI (Asynchronous Server Gateway Interface), предназначенный для работы с asyncio.