def __init__(self, *args, **params): BasePool.__init__(self, *args, **params) self._hosts = {} self._lock = RWLock()
class SimplePool(BasePool): def __init__(self, *args, **params): BasePool.__init__(self, *args, **params) self._hosts = {} self._lock = RWLock() def get(self, netloc): self._lock.reader_enters() try: if netloc not in self._hosts: return host = self._hosts[netloc] conn = host.get() return conn finally: self._lock.reader_leaves() def put(self, netloc, conn): self._lock.writer_enters() try: if netloc not in self._hosts: host = Host(self.keepalive, self.timeout) self._hosts[netloc] = host else: host = self._hosts[netloc] host.put(conn) finally: self._lock.writer_leaves() def clear_host(self, netloc): self._lock.writer_enters() try: if netloc not in self._hosts: return host = self._hosts[netloc] host.clear() finally: self._lock.writer_leaves() def clear(self): self._lock.writer_enters() try: for netloc, host in self._hosts: host.clear() del self._hosts[netloc] finally: self._lock.writer_leaves()