You could do this (and it's the way I'd design a tornado-like
framework for a language like java or c++), but I wouldn't recommend
it in most cases for python. The python GIL prevents you from making
full use of multiple cpus (which covers most servers these days) even
in a multi-threaded app, so you have to run multiple processes. Once
you're running multiple processes, you can easily just run a few more
as needed to fill in any utilization gaps that may be left by any
blocking database/memcache/etc calls you are doing. Multiple threads
in one process will be a little more efficient than running more
processes, but since thread-safety is never trivial it's unlikely to
be worth the effort. As long as your database operations are
reasonably efficient (properly indexed, etc), you don't need to worry
too much about doing blocking calls to the database in your
RequestHandlers.
-Ben