def init(self, addresses, configs): """ init the connection pool :param addresses: the graphd servers' addresses :param configs: the config :return: if all addresses are ok, return True else return False. """ self._configs = configs for address in addresses: if address not in self._addresses: try: ip = socket.gethostbyname(address[0]) except Exception: raise InValidHostname(str(address[0])) self._addresses.append((ip, address[1])) self._addresses_status[address] = self.S_BAD self._connections[address] = deque() # detect the services self._period_detect() # init min connections ok_num = self.get_ok_servers_num() if ok_num < len(self._addresses): return False conns_per_address = int(self._configs.min_connection_pool_size / ok_num) for addr in self._addresses: for i in range(0, conns_per_address): connection = Connection() connection.open(addr[0], addr[1], self._configs.timeout) self._connections[addr].append(connection) return True
def init(self, addresses, configs, ssl_conf=None): """init the connection pool :param addresses: the graphd servers' addresses :param configs: the config of the pool :param ssl_conf: the config of SSL socket :return: if all addresses are ok, return True else return False. """ if self._close: logging.error('The pool has init or closed.') raise RuntimeError('The pool has init or closed.') self._configs = configs for address in addresses: if address not in self._addresses: try: ip = socket.gethostbyname(address[0]) except Exception: raise InValidHostname(str(address[0])) ip_port = (ip, address[1]) self._addresses.append(ip_port) self._addresses_status[ip_port] = self.S_BAD self._connections[ip_port] = deque() self.update_servers_status() # detect the services self._period_detect() # init min connections ok_num = self.get_ok_servers_num() if ok_num < len(self._addresses): raise RuntimeError('The services status exception: {}'.format( self._get_services_status())) conns_per_address = int(self._configs.min_connection_pool_size / ok_num) if ssl_conf is None: for addr in self._addresses: for i in range(0, conns_per_address): connection = Connection() connection.open(addr[0], addr[1], self._configs.timeout) self._connections[addr].append(connection) else: for addr in self._addresses: for i in range(0, conns_per_address): connection = Connection() connection.open_SSL(addr[0], addr[1], self._configs.timeout, self._ssl_configs) self._connections[addr].append(connection) return True
def __init__(self, address, timeout, meta_cache): self._address = address self._timeout = timeout self._meta_cache = meta_cache self._connection = None self._ip = '' try: self._ip = socket.gethostbyname(address.host) if not isinstance(address.port, int): raise RuntimeError('Wrong port type: {}'.format( type(address.port))) except Exception: raise InValidHostname(str(address.host))
def __init__(self, addresses, timeout): if len(addresses) == 0: raise RuntimeError('Input empty addresses') self._timeout = timeout self._connection = None self._retry_count = 3 self._addresses = addresses for address in addresses: try: socket.gethostbyname(address[0]) except Exception: raise InValidHostname(str(address[0])) self._leader = self._addresses[0] self._lock = RLock()