WSGI
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 предоставляет простой и универсальный интерфейс между большинством веб-серверов и веб-приложениями или фреймворками.
Спецификации
[править | править код]![]() | В разделе не хватает ссылок на источники (см. рекомендации по поиску). |
По стандарту, WSGI-приложение должно удовлетворять следующим требованиям:
- должно быть вызываемым (callable) объектом (обычно это функция или метод)
- принимать два параметра:
- вызывать обработчик запроса с кодом 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 могут брать на себя следующие функции (но не ограничиваются этим):
- обработка сессий
- аутентификация/авторизация
- управление URL (маршрутизация запросов)
- балансировка нагрузки
- пост-обработка выходных данных (например, проверка на валидность)
- изменение заголовков
См. также
[править | править код]Примечания
[править | править код]- ↑ 1 2 Юревич, Ю. WSGI, Введение . Дата обращения: 15 октября 2016. Архивировано 19 октября 2016 года.
- ↑ PEP333, 2003.
- ↑ PEP3333, 2010.
- ↑ environ variables . Дата обращения: 15 октября 2016. Архивировано 7 июня 2020 года.
- ↑ start_response . Дата обращения: 15 октября 2016. Архивировано 7 июня 2020 года.
Литература
[править | править код]- Gardner, J. The Definitive Guide to Pylons. — Apress, 2008. — P. 369—388. — 568 p. — ISBN 978-1-590-59934-1.
Документация
[править | править код]- Eby, P. J. PEP 333 – Python Web Server Gateway Interface v1.0 : [англ.] : [арх. 16 марта 2022] // Python Enhancement Proposals. — 2003.
- Eby, P. J. PEP 3333 – Python Web Server Gateway Interface v1.0.1 : [англ.] : [арх. 21 марта 2022] // Python Enhancement Proposals. — 2010.
Ссылки
[править | править код]- PEP 3333 — Python Enhancement Proposal, определяющий стандарт интерфейса
- wsgi.org — крупнейшая вики об WSGI
Это заготовка статьи об информационных технологиях и вычислительной технике. Помогите Википедии, дополнив её. |