WSGI
Материал из Википедии — свободной энциклопедии
WSGI (Web Software Gateway Interface), произносится как "виски", - стандарт взаимодействия между веб-приложениями и/или фреймворками и веб-сервером (для языка программирования Python), описывается в PEP 333.
Содержание |
[править] Проблема
В Python существует большое количество различного рода веб-фреймворков, тулкитов и библиотек. Для каждого из них - собственный метод установки и настройки, они не умеют взаимодействовать между собой.
[править] Решение
PEP 333 описывает простой и универсальный интерфейс между веб-приложением и веб-сервером, а также для взаимодействия веб-приложений между собой.
[править] Спецификации
По стандарту, WSGI-приложение должно удовлетворять следующим требованиям:
- должно быть вызываемым (callable) объектом
- принимать два параметра:
- словарь переменных окружения (environ)
- обработчик запроса (start_response)
- вызывать обработчик запроса с кодом HTTP-ответа и HTTP-заголовками
- возвращать итератор с телом ответа
Простейшим примером WSGI-приложения может служить такая функция:
def simplest_wsgi_app(environ, start_response): start_response('200 OK', [('Content-Type', 'text/plain')]) return ['Hello, world!']
Здесь в качестве итератора используется список из одного элемента - строки 'Hello, world!'
[править] Middleware
Помимо приложений и серверов, стандарт дает определение middleware - компоненты, предоставляющие интерфейсы как приложению, так и серверу. Т.е. для сервера middleware является приложением, а для приложения - сервером. Это позволяет составлять "цепочки" WSGI-совместимых middleware.
Middleware могут брать на себя следующие функции (но не ограничиваются этим):
- обработка сессий
- аутентификация/авторизация
- управление URLами
- распределение нагрузки
- пост-обработка выходных данных (например, проверка на валидность)
[править] Совместимы с WSGI
[править] Конечные приложения
- Trac - трекер, вики, управление проектами
- MoinMoin - вики
- Roundup - трекер