WSGI
WSGI (англ. Web Server Gateway Interface, вимовляється віскі або візґі[1]) — стандарт взаємодії між Python-програмою, яка виконується на стороні сервера, і самим веб-сервером, наприклад, Apache.
Зміст |
Ідея [ред.]
В 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')]) return ['Hello, world!']
Тут в якості ітератора використовується список з одного елемента — рядка тексту 'Hello, world!'
Middleware [ред.]
Окрім веб-застосунків і веб-серверів стандарт дає визначення middleware-компоненти. Middleware надає інтерфейси як серверу, так і веб-застосунку. Тобто для сервера middleware є веб-застосунком, а для застосунка — сервером. Це дозволяє утворювати «ланцюжки» WSGI-сумісних middleware.
Middleware можуть брати на себе такі функції (однак не обмежуються наведеним):
- обробка сесій
- аутентифікація/авторизація
- управління URL (маршрутизація запитів)
- розподіл навантаження
- пост-обробка вихідних даних
Сумісні з WSGI [ред.]
Веб-застосунки [ред.]
Веб-фреймворки і сервери застосунків [ред.]
Зноски [ред.]
- ↑ записано на слух на PyCon Ukraine 2011
Посилання [ред.]
- PEP 3333 - Нова версія стандарту інтерфейсу 1.01
- PEP 333 — Python Enhancement Proposal, який визначає стандарт інтерфейса (старий)
- Paste — Бібліотека WSGI-компонент
- http://wsgi.org/ — найбільша вікі присвячена WSGI