Sobes.tech
Middle
161

Wat is WSGI (Web Server Gateway Interface) en welke rol speelt het bij het ontwikkelen van webapplicaties in Python?

Antwoord van AI

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