Что такое Python-эквивалент Tomcat? - PullRequest
41 голосов
/ 27 мая 2011

Этот вопрос, вероятно, выдает неверное представление, но мне любопытно, что такое "Tomcat" в мире Python.

Весь мой опыт веб-программирования связан с Java (или Groovy), поэтому я думаю, что на Javaтермины.И когда я думаю о создании базового веб-приложения, я думаю о написании некоторых сервлетов, создании файла WAR и развертывании его в Tomcat или другом контейнере сервлетов.

В Python предположим, что я написал некоторый код, который былспособный отвечать на HTTP-запросы, что мне с ним делать?Как мне его развернуть?

В частности: Какой контейнер чаще всего используется в Python?И есть ли эквивалент файла WAR, стандартная упаковка веб-приложения в один файл, который работает в различных контейнерах?

Ответы [ 4 ]

30 голосов
/ 27 мая 2011

Существуют разные подходы, которые имеют одну общую черту: они обычно взаимодействуют через WSGI со своим «контейнером» (сервером, получающим запросы HTTP, прежде чем они перейдут к вашему коду Python).

Существуют различные контейнеры:

  • wsgiref - очень простая эталонная реализация, которая хороша при разработке
  • Apache с mod_wsgi
  • большинство других веб-серверов с модулем, добавляющим поддержку WSGI
  • еще много
6 голосов
/ 28 мая 2011

Когда я думаю о создании базового веб-приложения, я думаю о написании некоторых сервлетов, создании файла WAR и развертывании его в Tomcat или другом контейнере сервлетов.

Это хорошо, но не имеет значения. Это просто Java-изм, и он не очень широко применяется вне Java.

Предположим, что в Python я написал код, способный отвечать на запросы HTTP, что мне с ним делать? Как бы я его развернул?

Это зависит.

Какой контейнер чаще всего используется в Python?

Нет ни одного.

И есть ли эквивалент файла WAR, стандартной упаковки веб-приложения в один файл, который работает в различных контейнерах?

Нет ни одного.


HTTP - это протокол для получения ответа на запрос. Вот и все. Это действительно очень маленькая вещь.

У вас есть CGI-скрипты, которые могут ответить на запрос. Библиотека Python cgi может сделать это. http://docs.python.org/library/cgi.html.

Это относительно неэффективно, потому что простое правило CGI - «запускать новый процесс для каждого запроса». Это также может быть небезопасно, если скрипт разрешает повышенные привилегии или плохо спланированные загрузки.

У вас есть mod_wsgi инфраструктура для подключения Apache к Python. Это может вести себя как CGI, или у него может быть выделенный «демон» Python, работающий в конце именованного канала.

Стандарт WSGI определяет формат для обработки запросов и ответов, который очень удобен и расширяем. Большинство фреймворков - так или иначе - совместимы с WSGI.

Наконец, существуют более полные структуры, которые включают определения классов для запросов и ответов, разбор URL-адресов, аутентификацию, авторизацию и т. Д. И т. Д.

Вот список: http://wiki.python.org/moin/WebFrameworks

2 голосов
/ 02 марта 2013

Может быть, 'uwsgi' поможет.Вот ссылка: http://projects.unbit.it/uwsgi/

0 голосов
/ 26 марта 2014

Для python доступно множество веб-серверов.Некоторые веб-серверы, такие как CherryPy, были написаны на самом Python.Самая крутая часть ответа заключается в том, что сам сервер tomcat поддерживает приложения на основе Python.

Для получения дополнительной информации посетите этот сайт: https://wiki.python.org/moin/WebServers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...