Вопрос

Некоторое время использую mod_python, я читаю все больше и больше статей о том, насколько хорош WSGI, даже не понимая, почему.

Так почему я должен на него переходить?Каковы преимущества?Трудно ли это и стоит ли оно того?

Это было полезно?

Решение

mod_wsgi против.мод_питон:

  • mod_wsgi немного быстрее (внутренне больше C, меньше Python)
  • Процессы mod_wsgi можно изолировать от Apache, что повышает безопасность/стабильность при меньшем использовании памяти[1]
  • mod_python дает вам доступ к некоторым внутренним компонентам Apache.

WSGI в целом:

  • множество многоразового промежуточного программного обеспечения (аутентификация/авторизация, сеансовые данные, кеширование, фильтрация)
  • простота развертывания на веб-серверах, отличных от Apache, либо через встроенную поддержку WSGI, либо через флап.

[1] — по сравнению с префоркингом Apache, который поддерживает отдельный интерпретатор Python в каждом процессе.

Другие советы

Для разработки сложных веб-приложений на Python вам, вероятно, придется использовать более комплексную среду веб-разработки, такую ​​​​как DJango, Zope, Turbogear и т. д.Как разработчику приложений вам не нужно сильно беспокоиться о WSGI.Все, что вам нужно знать, это то, что эти платформы поддерживают WSGI.WSGI позволяет разделить код веб-сервера и веб-приложения, и системный администратор может изменить веб-сервер, если веб-приложение совместимо с WSGI.Если вы разрабатываете в одной из этих платформ, вы в любом случае удовлетворяете этому условию.

Если вы разработчик веб-фреймворков (то есть разрабатываете DJango или Zope), вам необходимо более глубоко понимать WSGI.

Большинство сред Python реализуют wsgi. Для apache есть mod_wsgi и модуль SCGI / FastCGI / AJP + Flup для остальных. Таким образом, вы можете получить все преимущества отдельного процесса Python без привязки к одному веб-серверу.

Вам не нужно много переучиваться, поскольку с точки зрения разработчика разница лишь в небольшой оболочке и некоторой конфигурации сервера.

С точки зрения развертывания, разница заключается в том, что ваш код на Python находится в отдельном процессе от веб-браузера, что означает

a) Процесс Python может выполняться от имени другого пользователя, чем веб-сервер. Это может быть полезно для безопасности, если используется правильно.

b) Процессы веб-сервера не должны содержать среду выполнения Python. Это может значительно повысить производительность, если на сервере работает много «других» объектов. запросы (статические файлы и т. д.) и некоторые тяжелые запросы Python.

Так почему я должен на него переходить?Каковы преимущества?

Обычно, если у вас есть веб-сервер типа NGINX или Apache, вам необходимо включить модули (хотя конфигурация модулей в обоих случаях различна).

WSGI — это стандарт, описанный в PEP 3333, который, по сути, обеспечивает стандартный интерфейс между веб-приложениями, написанными на Python, и веб-серверами.

Это означает, что WSGI обеспечивает переносимость вашего веб-приложения Python на множество различных веб-серверов без каких-либо дополнительных настроек на вашем NGINX, Apache и т. д.

Кроме того, сервер WSGI может предоставить вам множество функций с большей гибкостью по сравнению с веб-сервером. Единорог, предоставляет множество функций, таких как:

  • Количество рабочих потоков для обработки запросов
  • Максимальное количество одновременных клиентов.
  • Максимальное количество ожидающих соединений.
  • Ограничьте разрешенный размер поля заголовка HTTP-запроса.
  • Максимальное количество запросов, которые рабочий процесс обработает перед перезапуском.

Здесь представляет собой полный документ о опциях, поддерживаемых Gunicorn.


Трудно ли это и стоит ли оно того?

Как системному администратору, вам не обязательно разбираться во всех деталях стандарта, но как разработчику программного обеспечения вам, возможно, потребуется понять немного больше, чем просто выполнять действия. pip install gunicorn и так далее.

Рекомендации

WSGI - это стандартный API, который позволяет вам выбрать веб-сервер, а также поставить перед ним конвейер WSGI, такой как Repoze.

См. http://repoze.org/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top