Что такое Python-эквивалент Tomcat?
Этот вопрос, вероятно, выдает заблуждение, но мне любопытно, что такое "Tomcat" в мире Python.
Весь мой опыт веб-программирования в Java (или Groovy), поэтому я думаю, что на Java. И когда я думаю о создании базового веб-приложения, я думаю о написании некоторых сервлетов, создании файла WAR и его развертывании в Tomcat или другом контейнере сервлетов.
В Python предположим, что я написал код, способный отвечать на HTTP-запросы, что бы я сделал с ним? Как я могу его развернуть?
В частности: что является наиболее часто используемым контейнером в Python? И есть ли эквивалент файла WAR, стандартной упаковки веб-приложения в один файл, который работает в различных контейнерах?
Ответы
Ответ 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
Ответ 3
Может быть, "uwsgi" поможет. Вот ссылка: http://projects.unbit.it/uwsgi/
Ответ 4
Для python существует множество веб-серверов. Некоторые веб-серверы, такие как CherryPy, были написаны на самом Python. Самая крутая часть ответа заключается в том, что сам сервер tomcat поддерживает приложения на основе Python.
Подробнее о сайте смотрите здесь: https://wiki.python.org/moin/WebServers