I wrote some simple realization of pool for pymongo. You can see it
Base bug there was with pymongo.connection.Pool because in the
original package it is thread-local, so when you spawn new greenlet
and trying to get already open connection, it creates new connection
because in this greenlet pool is empty.