When comparing Klein vs CherryPy, the Slant community recommends CherryPy for most people. In the question“What are the best general-purpose Python web frameworks usable in production sites?” CherryPy is ranked 9th while Klein is ranked 20th. The most important reason people chose CherryPy is:
It's very easy to choose what processes you want by turning them on or off. You can also configure per-URL as well.
Ranked in these QuestionsQuestion Ranking
Pros
Pro More concurrent requests, more interactivity
The fact that a Klein server is event-driven and non-blocking means that it can start handling a new request while previous requests are still open. This lets you serve more requests from a single process, meaning running multiple servers is now an option to be explored when your site makes it big, rather than a necessity for responsiveness under even modest loads.
Multiple requests per process also gives you flexibility to do things that would be impractical in WSGI-based alternatives like Flask or Bottle, such as keeping a connection to the browser open to send it chat messages or game updates in a Server Sent Event stream.
Pro Robust configuration mechanism
It's very easy to choose what processes you want by turning them on or off. You can also configure per-URL as well.
Pro Has production-ready server
Comes with a production level wsgi server that can be used instead of / in addition to gunicorn etc.
Pro Helps you organize the structure of your code
CherryPy provides some dispatcher patterns that support a wide range of functionality and provide some helpful ways of organizing the code.
Cons
Con Lacks database integration
Talking to database is a pretty common thing for a web application to do. Larger frameworks know this, and cover it in some detail by the end of the tutorial. In contrast, the Klein documentation is currently silent on this topic, leaving the issue of how to do database queries in a way that won't block your event-driven code entirely up to you.
Con Lacking good documentation
CherryPy's documentation could use some work. It generally feels very slim and is seriously lacking in some parts. For a beginner who is just starting with Python Frameworks, working with CherryPy's documentation would be very hard.