@asyncio.coroutine<EOL><INDENT>def acquire(self):<DEDENT>
while self.size() == <NUM_LIT:0> or self.size() < self._minsize:<EOL><INDENT>_conn = yield from self._create_new_conn()<EOL>if _conn is None:<EOL><INDENT>break<EOL><DEDENT>self._pool.put_nowait(_conn)<EOL><DEDENT>conn = None<EOL>while not conn:<EOL><INDENT>_conn = yield from self._pool.get()<EOL>if _conn.reader.at_eof() or _conn.reader.exception():<EOL><INDENT>self._do_close(_conn)<EOL>conn = yield from self._create_new_conn()<EOL><DEDENT>else:<EOL><INDENT>conn = _conn<EOL><DEDENT><DEDENT>self._in_use.add(conn)<EOL>return conn<EOL>
Acquire connection from the pool, or spawn new one
        if pool maxsize permits.

        :return: ``tuple`` (reader, writer)