Подтвердить что ты не робот

Что такое Python-эквивалент Tomcat?

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

Это зависит.

Каков наиболее часто используемый контейнер в Python?

Нет.

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

Нет.


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

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

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

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

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

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

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

Ответ 4

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

Подробнее о сайте смотрите здесь: https://wiki.python.org/moin/WebServers