code: def _put_conn(self, conn):
          
          try:
              self.pool.put(conn, block=False)
              return  # Everything is dandy, done.
          except AttributeError:
              # self.pool is None.
              pass
          except Full:
              # This should never happen if self.block == True
              log.warning(
                  "Connection pool is full, discarding connection: %s" %
                  self.host)
  
          # Connection never got put back into the pool, close it.
          if conn:
              conn.close()
docs: Put a connection back into the pool.
  
          :param conn:
              Connection object for the current host and port as returned by
              :meth:`._new_conn` or :meth:`._get_conn`.
  
          If the pool is already full, the connection is closed and discarded
          because we exceeded maxsize. If connections are discarded frequently,
          then maxsize should be increased.
  
          If the pool is closed, then the connection will be closed and discarded.