Interested Article - WSGI
- 2020-01-13
- 1
WSGI ( англ. Web Server Gateway Interface ) — стандарт взаимодействия между Python -программой, выполняющейся на стороне сервера, и самим веб-сервером , например Apache .
Идея
В Python существует большое количество различного рода веб-фреймворков (каркасов), тулкитов и библиотек. Для каждого из них — собственный метод установки и настройки, они не умеют взаимодействовать между собой. Это может стать затруднением для тех, кто только начинает изучать Python, так как, например, выбор определённого фреймворка может ограничить выбор веб-сервера, и наоборот.
WSGI предоставляет простой и универсальный интерфейс между большинством веб-серверов и веб-приложениями или фреймворками.
Спецификации
По стандарту, WSGI-приложение должно удовлетворять следующим требованиям:
- должно быть вызываемым (callable) объектом (обычно это функция или метод)
-
принимать два параметра:
- словарь переменных окружения (environ)
- обработчик запроса (start_response)
- вызывать обработчик запроса с кодом 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 (маршрутизация запросов)
- балансировка нагрузки
- пост-обработка выходных данных (например, проверка на валидность)
- изменение заголовков
Совместимы с WSGI
Конечные приложения
- Trac — система отслеживания ошибок , вики, управление проектами
- MoinMoin — вики
- — система отслеживания ошибок
- Odoo — свободная ERP система
Веб-фреймворки и серверы приложений
- Apache mod wsgi
- CherryPy
- Django
- Flask (веб-фреймворк)
- Pylons
- Pyramid
- Tornado
- TurboGears
- Zope 3 (BlueBream)
- Twisted
- uWSGI (поддерживает также бинарный вариант протокола — uwsgi )
Библиотеки
- Python Paste — библиотека компонентов для работы с WSGI-приложениями
Аналоги
- — аналогичный подход, реализованный для Ruby ;
- — для JavaScript ;
- PSGI — для Perl .
- ASGI — духовный наследник WSGI, добавляющий поддержку асинхронных приложений.
См. также
Примечания
- . Дата обращения: 15 октября 2016. 19 октября 2016 года.
- . Дата обращения: 15 октября 2016. 7 июня 2020 года.
- . Дата обращения: 15 октября 2016. 7 июня 2020 года.
- . Дата обращения: 15 октября 2016. 4 мая 2017 года.
- . Дата обращения: 10 октября 2012. 18 октября 2012 года.
- . Дата обращения: 31 октября 2012. 27 февраля 2012 года.
- 17 декабря 2014 года.
Литература
- James Gardner. The Definitive Guide to Pylons. — Apress, 2008. — 568 с. — P. 369—388. — ISBN 9781590599341 .
Ссылки
- — Python Enhancement Proposal, определяющий стандарт интерфейса
- — крупнейшая вики об WSGI
- 2020-01-13
- 1