When comparing Klein vs Bottle, the Slant community recommends Bottle for most people. In the question“What are the best general-purpose Python web frameworks usable in production sites?” Bottle is ranked 4th while Klein is ranked 20th. The most important reason people chose Bottle is:
Being a small one file distribution it includes almost every vital thing you need to support little websites (routing, templating). Everything else can be implemented using plugins.
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 Flexible
Being a small one file distribution it includes almost every vital thing you need to support little websites (routing, templating). Everything else can be implemented using plugins.
Pro Single-file distribution
Bottle works around the one-file approach, everything is done in a bottle.py
file. This means that it's extremely easy to share and upload your application since it practically is just one python file.
Pro No need to install
It is so little there's no need to install, it is included in the standard libs python.
Pro Async, *let friendly
Using it with gevent is a breeze. It's a WSGI app so it's easy to make it work with anything.
Pro Truly magnificent
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 Small community. Difficult to find online docs and examples
Con Very hard to develop projects that are not smaller than 1000 lines
While Bottle is a great framework for building small applications (generally less than 1000 lines of code), it starts getting very hard to manage your application if you want to go even a bit larger than that.
The fact that it follows a single-file distribution model and that it's missing something like Flask's blueprints only make this problem worse.