code: def get_connection(self, command_name, *keys, **options):
          
  
          # Make sure we haven't changed process.
          self._checkpid()
  
          # Try and get a connection from the pool. If one isn't available within
          # self.timeout then raise a ``ConnectionError``.
          connection = None
          try:
              connection = self.pool.get(block=True,timeout=self.timeout)
          except Empty:
              # Note that this is not caught by the redis client and will be
              # raised unless handled by application code. If you want never to            
              raise ConnectionError("No connection available.")
  
          # If the ``connection`` is actually ``None`` then that's a cue to make
          # a new connection to add to the pool.
          if connection is None:
              connection = self.make_connection()
  
          return connection
docs: Get a connection, blocking for ``self.timeout`` until a connection
          is available from the pool.
          
          If the connection returned is ``None`` then creates a new connection.
          Because we use a last-in first-out queue, the existing connections
          (having been returned to the pool after the initial ``None`` values
          were added) will be returned before ``None`` values. This means we only
          create new connections when we need to, i.e.: the actual number of
          connections will only increase in response to demand.