mtwsgi
Multithreaded Python WSGI implementation.
Drop-in replacement for wsgiref.WSGIServer, but dispatches requests to threads in a pool instead of serving requests serially (blocking).
Can be used indepently of Bottle, but here's an example that uses both:
import bottle
import time
from mtbottle import MTServer
app = bottle.Bottle()
@app.route('/')
def foo():
time.sleep(2)
return 'hello, world!\n'
app.run(server=MTServer, host='0.0.0.0', port=8080, thread_count=3)
# Here, app is nonblocking; it will handle up to 3 requests concurrently.
# A 4th concurrent request would block until one of the first 3 completed.