This question likely betrays a misconception, but I\'m curious what the \"Tomcat\" of the Python world is.
All of my web programming experience is in Java (or Groovy) so
Maybe 'uwsgi' will help. Here is the link:http://projects.unbit.it/uwsgi/
when I think of making a basic web-app, I think of writing some servlets, building a WAR file, and deploying it in Tomcat or another servlet container.
That's nice, but irrelevant. That's just a Java-ism, and doesn't apply very widely outside Java.
In Python, suppose I wrote some code that was capable of responding to HTTP requests, what would I do with it? How would I deploy it?
That depends.
What is the most commonly used container in Python?
There isn't one.
And is there an equivalent of a WAR file, a standard packaging of a web-app into one file that works in the various containers?
There isn't one.
HTTP is a protocol for producing a response to a request. That's it. It's really a very small thing.
You have CGI scripts which can respond to a request. The Python cgi
library can do that. http://docs.python.org/library/cgi.html.
This is relatively inefficient because the simple CGI rule is "fire off a new process for each request." It can also be insecure if the script allows elevated privileges or badly planned-out uploads.
You have the mod_wsgi
framework to connect Apache to Python. This can behave like CGI, or it can have a dedicated Python "daemon" running at the end of a named pipe.
The WSGI standard defines a format for request and response processing that's very handy and very extensible. Most of the frameworks -- in one way or another -- are WSGI compatible.
Finally, there are more complete frameworks that include class definitions for requests and responses, URL parsing, Authentication, Authorization, etc., etc.
Here's a list: http://wiki.python.org/moin/WebFrameworks
There are different approaches which have one thing in common: They usually communicate via WSGI with their "container" (the server receiving the HTTP requests before they go to your Python code).
There are various containers:
There are many web-servers available for python. Some of the webservers like CherryPy was written in Python itself. The most coolest part of the answer is that tomcat server itself support Python-based applications.
For further details look into this site: https://wiki.python.org/moin/WebServers