Growler is a micro web framework written atop the asyncio python library.

The original goal of the project was to teach the author how to use asyncio at its lowest levels; to that end, it is a success.

The design of the framework was inspired by work with NodeJS and the Express/Connect frameworks. The driving idea is to have an 'application' object that creates a mutable request and response pair upon a client connection. This pair gets passed to a series of middleware (determined by the request header) which modify and add functionality to these objects. The server continues this chain until the response object sends a response back to the client, or the application runs out of middleware (in which case it responds with its own 500). All other behavior is driven by the structure of the chain.

The use of decorators together with the power of python's introspection creates some interesting possibilities to write clean, reusable code. The lack of required callbacks and proper try/except blocks make the program flow easy to see and reason with. Features like the zipapp module allow you to zip your entire application into a single executable file, providing consistent testing and distribution. Add to the language a plethora of open source packages which are (mostly) compatible with what you want to do.

The language is becoming more and more async friendly; the community needs to respond.

So next time you have to choose a foundation for your new web project, just ask...

Why Not Growler?

Why not? because it's a baby project that couldn't even serve a static file a week ago. It's got one guy working on it in his spare time, learning as he goes. There are pleanty of docstrings in the source (of those things which haven't changed underneath them), but no actual documentation is generated to the public (as the project is too volatile.)