Назад к вопросам
Middle
68
questionbank
Что такое WSGI (Web Server Gateway Interface) и какую роль он играет в разработке веб-приложений на Python?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
WSGI определяет стандартный интерфейс между веб-сервером и веб-приложением (или фреймворком), написанным на Python.
Его роль:
- Стандартизация: Позволяет использовать любой WSGI-совместимый веб-сервер (например, Gunicorn, uWSGI, Nginx с uWSGI) с любым WSGI-совместимым веб-фреймворком (например, Django, Flask, Pyramid).
- Изоляция: Отделяет логику приложения от особенностей конкретного веб-сервера, упрощая переключение между серверами или фреймворками.
- Масштабируемость: Позволяет серверу эффективно управлять несколькими процессами или потоками, выполняющими WSGI-приложение.
WSGI-интерфейс включает:
- Функцию приложения (application callable), которая принимает два аргумента:
environ(словарь информации окружения) иstart_response(функция обратного вызова для отправки заголовков). - Сервер вызывает эту функцию, передает данные запроса в
environи ожидает вывода тела ответа. - Приложение использует
start_responseдля отправки заголовков и статуса HTTP, а затем возвращает итерируемый объект с данными тела ответа.
Пример структуры WSGI-приложения:
# myapp.py
def application(environ, start_response):
status = '200 OK' # HTTP статус ответа
headers = [('Content-type', 'text/plain')] # Заголовки ответа
start_response(status, headers) # Отправка статуса и заголовков
# Тело ответа - итерируемый объект (здесь list из одного элемента)
return [b"Hello, WSGI!"]
Для запуска такого приложения с помощью WSGI-сервера (например, Gunicorn):
gunicorn myapp:application