- WSGI
-
WSGI (англ. Web Server Gateway Interface, обычно произносится сообществом как «висги» или «виски»[1][2][3]) — стандарт взаимодействия между Python-программой, выполняющейся на стороне сервера, и самим веб-сервером, например, Apache.
Содержание
Идея
В Python существует большое количество различного рода веб-фреймворков, тулкитов и библиотек. Для каждого из них — собственный метод установки и настройки, они не умеют взаимодействовать между собой. Это может стать проблемой для тех, кто только начинает изучать Python, так как, например, выбор определённого фреймворка может ограничить выбор веб-сервера, и наоборот.
WSGI предоставляет простой и универсальный интерфейс между большинством веб-серверов и веб-приложениями или фреймворками.
Спецификации
По стандарту, WSGI-приложение должно удовлетворять следующим требованиям:
- должно быть вызываемым (callable) объектом (обычно это функция или метод)
- принимать два параметра:
- словарь переменных окружения (environ)
- обработчик запроса (start_response)
- вызывать обработчик запроса с кодом HTTP-ответа и HTTP-заголовками
- возвращать итерируемый объект с телом ответа
Простейшим примером WSGI-приложения может служить такая функция-генератор:
def simplest_wsgi_app(environ, start_response): start_response('200 OK', [('Content-Type', 'text/plain')]) yield 'Hello, world!'
Middleware
Помимо приложений и серверов, стандарт дает определение middleware-компонентов, предоставляющих интерфейсы как приложению, так и серверу. То есть для сервера middleware является приложением, а для приложения — сервером. Это позволяет составлять «цепочки» WSGI-совместимых middleware.
Middleware могут брать на себя следующие функции (но не ограничиваются этим):
- обработка сессий
- аутентификация/авторизация
- управление URL (маршрутизация запросов)
- балансировка нагрузки
- пост-обработка выходных данных (например, проверка на валидность)
Совместимы с WSGI
Конечные приложения
- Trac — система отслеживания ошибок, вики, управление проектами
- MoinMoin — вики
- Roundup — система отслеживания ошибок
- OpenERP — свободная ERP система[4]
Веб-фреймворки и серверы приложений
- Apache mod wsgi
- Bottle.py
- CherryPy
- Django
- Flask
- Pylons
- Pyramid
- Tornado
- TurboGears
- Zope 3 (BlueBream)
Библиотеки
- Python Paste — библиотека компонент для работы с WSGI-приложениями
Аналоги
Примечания
- ↑ Zope2 100 Proof WSGI Sprint
- ↑ So what is WSGI anyway?
- ↑ Gardner, 2008, p. 369
- ↑ Technical Architecture, Developer Book (OpenERP). Архивировано из первоисточника 18 октября 2012. Проверено 10 октября 2012.
- ↑ Yehuda Katz, Rack as a Transformative Figure, 2009
- ↑ JSGI & Jack
Ссылки
- PEP 3333 — Python Enhancement Proposal, определяющий стандарт интерфейса
- wsgi.org — крупнейшая вики об WSGI
- серия статей «Веб-разработка без фреймворков»
Литература
- James Gardner The Definitive Guide to Pylons. — Apress, 2008. — 568 с. — P. 369-388. — ISBN 9781590599341
Это заготовка статьи о компьютерах. Вы можете помочь проекту, исправив и дополнив её.
Это примечание по возможности следует заменить более точным.Категории:- Python
- Стандарты
Wikimedia Foundation. 2010.