Лучшие вопросы
Таймлайн
Чат
Перспективы

WSGI

Из Википедии, свободной энциклопедии

Remove ads

WSGI (англ. Web Server Gateway Interface) — стандарт обмена данными между веб-сервером и веб-приложением, написанным на Python, описанный в документе PEP 333[1].

История

WSGI придумал создатель фреймворка Pylons Бен Бангерт (англ. Ben Bangert), известный под псевдонимом Groovie[1].

В 2003 году была опубликована спецификация PEP 333[2].

В 2010 году вышла спецификация PEP 3333[3].

Идея

В Python существует большое количество различного рода веб-фреймворков (каркасов), тулкитов и библиотек. Для каждого из них — собственный метод установки и настройки, они не умеют взаимодействовать между собой. Это может стать затруднением для тех, кто только начинает изучать Python, так как, например, выбор определённого фреймворка может ограничить выбор веб-сервера, и наоборот.

WSGI предоставляет простой и универсальный интерфейс между большинством веб-серверов и веб-приложениями или фреймворками.

Remove ads

Спецификации

По стандарту, WSGI-приложение должно удовлетворять следующим требованиям:

  • должно быть вызываемым (callable) объектом (обычно это функция или метод)
  • принимать два параметра:
    • словарь переменных окружения (environ)[4]
    • обработчик запроса (start_response)[5]
  • вызывать обработчик запроса с кодом HTTP-ответа и HTTP-заголовками
  • возвращать итерируемый объект с телом ответа

Простейшим примером WSGI-приложения может служить такая функция-генератор:

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    yield b'Hello, World!\n'

Middleware

Помимо приложений и серверов, стандарт дает определение middleware-компонентов, предоставляющих интерфейсы как приложению, так и серверу. То есть для сервера middleware является приложением, а для приложения — сервером. Это позволяет составлять «цепочки» WSGI-совместимых middleware. Middleware — простая обертка над объектом приложения, реализовать её можно через замыкание.

Middleware могут брать на себя следующие функции (но не ограничиваются этим):

Remove ads

См. также

  • ASGI — духовный наследник WSGI, добавляющий поддержку асинхронных приложений[источник не указан 109 дней]

Примечания

Литература

Документация

Ссылки

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads