'Get a :class:`ConnectionPool` based on the provided pool key.
``pool_key`` should be a namedtuple that only contains immutable
objects. At a minimum it must have the ``scheme``, ``host``, and
``port`` fields.'

def connection_from_pool_key(self, pool_key, request_context=None):

    with self.pools.lock:
        pool = self.pools.get(pool_key)
        if pool:
            return pool
        scheme = request_context['scheme']
        host = request_context['host']
        port = request_context['port']
        pool = self._new_pool(scheme, host, port, request_context=request_context)
        self.pools[pool_key] = pool
    return pool
