WSGI
WSGI(англ.Web Server Gateway Interface,вимовляєтьсявіскіабовізґі[1]) — стандарт взаємодії міжPython-програмою, яка виконується на сторонісервера,і самимвебсервером,наприклад,Apache.
В Python існує велика кількість різного роду вебфреймворків,інструментаріїв ібібліотек.У кожного з них — власний метод встановлення та налаштування, вони часто написані так, що не можуть взаємодіяти між собою. Це може стати проблемою, бо вибір фреймворку може обмежити вибір вебсервера і навпаки.
WSGI надає простий і універсальнийінтерфейсдля взаємодії між більшістю вебсерверів івебзастосункамичифреймворками.
Відповідно до стандарту WSGI, вебзастосунок має задовольняти наступні вимоги:
- має бути викличним (callable) об'єктом
- приймати два параметри:
- словник змінних оточення (environ)
- обробник запиту(start_response)
- викликати обробник запиту з кодомHTTP-відповіді та HTTP-заголовками
- повертати ітератор з тілом відповіді
Простим прикладом WSGI-застосунку може служити така функція:
defsimplest_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 (маршрутизаціязапитів)
- розподіл навантаження
- пост-обробка вихідних даних
- ↑записано на слух на PyCon Ukraine 2011
- PEP 3333[Архівовано1 листопада 2011 уWayback Machine.]- Нова версія стандарту інтерфейсу 1.01
- PEP 333[Архівовано6 вересня 2008 уWayback Machine.]— Python Enhancement Proposal, який визначає стандарт інтерфейсу (старий)
- Paste— Бібліотека WSGI-компонент
- http://wsgi.org/[Архівовано1 квітня 2021 уWayback Machine.]— найбільша вікі присвячена WSGI