Jump to content

Интерфейс шлюза веб-сервера

(Перенаправлено с WSGI )

Интерфейс шлюза веб-сервера ( WSGI , произносится как виски) . [ 1 ] [ 2 ] или WIZ -ги [ 3 ] ) — это простое соглашение о вызовах для веб-серверов пересылки запросов веб-приложениям или платформам, написанным на языке программирования Python . Текущая версия WSGI, версия 1.0.1, указана в предложении по расширению Python (PEP) 3333. [ 4 ]

Первоначально WSGI был указан как PEP-333 в 2003 году. [ 5 ] PEP-3333, опубликованный в 2010 году, обновляет спецификацию Python 3 .

Python В 2003 году веб-фреймворки обычно писались только с использованием CGI , FastCGI , mod_python или какого-либо другого пользовательского API конкретного веб-сервера . [ 6 ] Цитируем PEP 333:

В настоящее время Python может похвастаться широким разнообразием фреймворков веб-приложений, таких как Zope, Quixote, Webware, SkunkWeb, PSO и Twisted Web — и это лишь некоторые из них. Такое широкое разнообразие вариантов может стать проблемой для новых пользователей Python, потому что, вообще говоря, их выбор веб-фреймворка будет ограничивать их выбор пригодных для использования веб-серверов, и наоборот... Напротив, хотя Java имеет столько же фреймворков веб-приложений. Доступный API-интерфейс «сервлетов» Java позволяет приложениям, написанным с использованием любой платформы веб-приложений Java, запускаться на любом веб-сервере, поддерживающем API сервлетов.

Таким образом, WSGI был создан как независимый от реализации интерфейс между веб-серверами и веб-приложениями или платформами, чтобы обеспечить общую основу для разработки портативных веб-приложений. [ 4 ]

Обзор спецификаций

[ редактировать ]

У WSGI есть две стороны:

  • сторона сервера / шлюза . Часто это полнофункциональное программное обеспечение веб-сервера, такое как Apache или Nginx , или легкий сервер приложений, который может взаимодействовать с веб-сервером, например flup .
  • сторона приложения/фреймворка. Это вызываемый объект Python, предоставляемый программой или платформой Python.

Между сервером и приложением может быть один или несколько WSGI компонентов промежуточного программного обеспечения , которые реализуют обе стороны API, обычно в коде Python.

WSGI не определяет, как следует запускать интерпретатор Python, а также как следует загружать или настраивать объект приложения, а разные платформы и веб-серверы достигают этого по-разному.

Промежуточное ПО WSGI

[ редактировать ]

Компонент промежуточного программного обеспечения WSGI — это вызываемый объект Python, который сам по себе является приложением WSGI, но может обрабатывать запросы, делегируя их другим приложениям WSGI. Эти приложения сами могут быть компонентами промежуточного программного обеспечения WSGI. [ 7 ]

Компонент промежуточного программного обеспечения может выполнять такие функции, как: [ 7 ]

  • Маршрутизация запроса к различным объектам приложения на основе целевого URL-адреса после соответствующего изменения переменных среды .
  • Разрешение одновременной работы нескольких приложений или платформ в одном процессе.
  • Балансировка нагрузки и удаленная обработка путем пересылки запросов и ответов по сети.
  • Выполнение постобработки контента, например применение XSLT . таблиц стилей

Пример приложения

[ редактировать ]

WSGI-совместимое приложение « Hello, World! », написанное на Python :

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    yield b'Hello, World!\n'

Где:

  • Строка 1 определяет функцию [ 8 ] названный application, который принимает два параметра, environ и start_response. environ — это словарь, содержащий переменные среды CGI , а также другие параметры запроса и метаданные под четко определенными ключами. [ 9 ] start_response сам является вызываемым объектом, принимающим два позиционных параметра, status и response_headers.
  • Звонки по линии 2 start_response, указав «200 OK» в качестве статуса HTTP и заголовок ответа «Content-Type».
  • Строка 3 превращает функцию в генератор . Тело ответа возвращается в виде итерации байтовых строк .

Пример вызова приложения

[ редактировать ]

Полный пример сетевого сервера WSGI выходит за рамки этой статьи. Ниже приведен эскиз того, как можно вызвать приложение WSGI и получить его строку состояния HTTP, заголовки ответа и тело ответа в виде объектов Python. [ 10 ] Подробности о том, как построить environ dict были опущены.

from io import BytesIO

def call_application(app, environ):
    status = None
    headers = None
    body = BytesIO()
    
    def start_response(rstatus, rheaders):
        nonlocal status, headers
        status, headers = rstatus, rheaders
        
    app_iter = app(environ, start_response)
    try:
        for data in app_iter:
            assert status is not None and headers is not None, \
                "start_response() was not called"
            body.write(data)
    finally:
        if hasattr(app_iter, 'close'):
            app_iter.close()
    return status, headers, body.getvalue()

environ = {...}  # "environ" dict
status, headers, body = call_application(app, environ)

WSGI-совместимые приложения и платформы

[ редактировать ]

Многочисленные веб-фреймворки поддерживают WSGI:

В настоящее время доступны оболочки для FastCGI , CGI , SCGI , AJP (с использованием flup), wwisted.web , Apache (с использованием mod_wsgi или mod_python ), Nginx (с использованием ngx_http_uwsgi_module), [ 26 ] Nginx Unit (с использованием языкового модуля Python), [ 27 ] и Microsoft IIS (с использованием WFastCGI, [ 28 ] Исапи-WSGI, [ 29 ] PyISAPIe, [ 30 ] или шлюз ASP ).

См. также

[ редактировать ]
  1. ^ Симионато, Микеле (11 июня 2007 г.). «Введение в веб-программирование с помощью WSGI» .
  2. ^ Эдж, Джейк (9 июля 2019 г.). «Вознялся с микрофреймворками» . ЛВН .
  3. ^ Голдберг, Кевин (9 мая 2016 г.). «Введение в серверы Python WSGI для повышения производительности | AppDynamics» . Блог о мониторинге производительности приложений | AppDynamics . Проверено 20 августа 2020 г.
  4. ^ Jump up to: а б «PEP 3333 — Интерфейс шлюза веб-сервера Python v1.0.1» . Python.org . Проверено 4 апреля 2018 г.
  5. ^ «PEP 333 — Интерфейс шлюза веб-сервера Python v1.0» . Python.org . Проверено 4 апреля 2018 г.
  6. ^ «FrontPage — Python Wiki» . Python.org . Проверено 27 января 2017 г.
  7. ^ Jump up to: а б «PEP 3333 — Интерфейс шлюза веб-сервера Python v1.0.1» . Python.org . Проверено 4 апреля 2018 г.
  8. ^ т.е. «функция, метод, класс или экземпляр с __call__ метод"
  9. ^ «PEP 3333 — Интерфейс шлюза веб-сервера Python v1.0.1» . Python.org . Проверено 4 апреля 2018 г.
  10. ^ «Создание промежуточного программного обеспечения WSGI — Алан Кристофер Томас — Minted — PythonKC» . Ютуб . 28 августа 2015 г. Архивировано из оригинала 12 декабря 2021 г. Проверено 27 января 2017 г.
  11. ^ эффект » Пуэрария « Каков ? геля
  12. ^ «Django без mod_python и поддержки WSGI | Блог | Django» . Джангопроект.com . 18 июля 2005 г. Проверено 27 января 2017 г.
  13. ^ «wsgi — сервер WSGI — документация Eventlet 0.20.1» . Eventlet.net . Проверено 27 января 2017 г.
  14. ^ «Falcon — базовая платформа веб-API для Python» . Проверено 22 октября 2017 г.
  15. ^ «gevent-fastcgi 1.0.2.1: Индекс пакетов Python» . Pypi.python.org . 06.12.2015 . Проверено 27 января 2017 г.
  16. ^ «аномалия/престанс: микроплатформа REST, совместимая с WSGI» . GitHub.com . Проверено 27 января 2017 г.
  17. ^ «Архив кода Google — долгосрочное хранилище для хостинга проектов Google Code» . Code.google.com . Проверено 27 января 2017 г.
  18. ^ «Рамка Пикника» . Pycnic.nullism.com . Проверено 27 января 2017 г.
  19. ^ «theintencity/restlite: легкие серверные инструменты RESTful на Python» . GitHub.com . Проверено 27 января 2017 г.
  20. ^ «limodou/uliweb: простая и удобная веб-инфраструктура Python» . GitHub.com . Проверено 27 января 2017 г.
  21. ^ «документация официантки» . docs.pylonsproject.org . Проверено 26 сентября 2018 г.
  22. ^ «Добро пожаловать в» . Веб.py. ​11 сентября 2009 г. Проверено 27 января 2017 г.
  23. ^ «weblayer — документация по веб-плееру v0.4.3» . Packages.python.org . Проверено 27 января 2017 г.
  24. ^ «Добро пожаловать | Werkzeug (Библиотека утилит Python WSGI)» . Werkzeug.pocoo.org . Проверено 27 января 2017 г.
  25. ^ «Сервер CalDAV и CardDAV — простой сервер календаря и контактов» . Радикале.орг . Проверено 27 января 2017 г.
  26. ^ «Модуль ngx_http_uwsgi_module» . Nginx.org . Проверено 27 января 2017 г.
  27. ^ «Конфигурация — Модуль NGINX» . Unit.nginx.org . Проверено 4 мая 2023 г.
  28. ^ «Инструменты Python для Visual Studio — Документация» . Pytools.codeplex.com . Проверено 27 января 2017 г.
  29. ^ «Архив кода Google — долгосрочное хранилище для хостинга проектов Google Code» . Code.google.com . Проверено 27 января 2017 г.
  30. ^ «Расширение Python ISAPI для загрузки IIS | SourceForge.net» . Pyisapie.sourceforge.net . 24 апреля 2012 г. Проверено 27 января 2017 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b1b931e713025b1058f5da0105074af4__1683185400
URL1:https://arc.ask3.ru/arc/aa/b1/f4/b1b931e713025b1058f5da0105074af4.html
Заголовок, (Title) документа по адресу, URL1:
Web Server Gateway Interface - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)