Every native thread (that you use gevent in) has an event loop and a Hub. Every Hub has a threadpool. The threadpool is used by default to do operations like network name resolving and (on windows) certain types of IO. So you can see how threads can multiply.
Unless you are doing something that releases the GIL, and is *not* something that is handled by gevent (for example, you call into a C extension that releases the GIL and spend most of your time there), you probably get very little benefit from trying to use a native thread for each request. (Part of the point of gevent is that you don't need to use native threads for most things.) Consider using greenlets and a greenlet pool instead; see StreamServer and BaseServer.
> --
> You received this message because you are subscribed to the Google Groups "gevent: coroutine-based Python network library" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to
gevent+un...@googlegroups.com.
> For more options, visit
https://groups.google.com/d/optout.