As of early 2011, there is a lot of flux in the Python world with regard to web frameworks. There are a couple of big players, namely Django, Pylons, and TurboGears, as well as several more obscure projects like CherryPy and Bottle. Having worked with many of these projects, I decided that although each has its strengths, they all also had something about them that just made me feel uncomfortable working with them.
Strengths
Discomforts
I am not specifically listing any of these issues as weaknesses or drawbacks, because they aren’t per-se. Honestly, there isn’t anything wrong with Django, and many people love it. Personally, I don’t feel comfortable working with it for a few reasons.
The original Pylons was a very powerful web framework. It was probably my favorite framework, and I have built a number of applications using it. Unfortunately, development has been discontinued and efforts are now being concentrated on Pyramid instead.
Strengths
Weaknesses
I simply do not like Pyramid at all, and it is really disappointing that the Pylons project has moved in this direction. Essentially everything that I liked about Pylons is gone. The idea of using traversal to map URLs to routines is clever, but it is overly complex compared to the familiar URL dispatching in other frameworks.
I haven’t used the other frameworks as much. In general, I try to avoid having my applications depend on obscure or unmaintained libraries because when I find a bug (and I will), I need some assurance that it will be fixed soon. I do not like having to patch other people’s code in production environments, especially if it is an application I am passing along to a client.
I never really looked at TurboGears at all, and with the recent changes to the Pylons project, upon which TurboGears is based, there is a great deal of uncertainty with regard to its future.
CherryPy is very nice, and I did a bit of work with it a while back. I thought it was dead for a long time, though, and I have never really produced a production application built on it. With its most recent release (3.2.0), it is the first web framework to support Python 3, which is exciting. I may revisit it in the near future, as a matter of fact.
The truth is, I started Milla as an exercise to better understand WSGI. All of the frameworks discussed above are great, and will most likely serve everyone’s needs. There really isn’t any reason for anyone to use Milla over any of them, but I won’t stop you.