Когда я думаю о создании базового веб-приложения, я думаю о написании некоторых сервлетов, создании файла 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