What is the Python equivalent of Tomcat? What is the Python equivalent of Tomcat? python python

What is the Python equivalent of Tomcat?


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:

  • wsgiref - a very simple reference implementation which is nice during development
  • Apache with mod_wsgi
  • most other Webservers with a module adding WSGI support
  • many more


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