def get_ip(self): while True: index = random.randint(0, len(self.ip_range_list) - 1) ip_range = self.ip_range_list[index] #self.logger.debug("random.randint %d - %d", ip_range[0], ip_range[1]) if ip_range[1] == ip_range[0]: return utils.ip_num_to_string(ip_range[1]) try: id_2 = random.randint(0, ip_range[1] - ip_range[0]) except Exception as e: self.logger.exception("random.randint:%r %d - %d, %d", e, ip_range[0], ip_range[1], ip_range[1] - ip_range[0]) return ip = ip_range[0] + id_2 add_last_byte = ip % 256 if add_last_byte == 0 or add_last_byte == 255: continue return utils.ip_num_to_string(ip)
def get_ip(self): while self.bin_fd is None: time.sleep(1) for _ in range(5): position = random.randint(0, self.bin_size/4) * 4 self.bin_fd.seek(position) ip_bin = self.bin_fd.read(4) if ip_bin is None: self.logger.warn("ip_pool.random_get_ip position:%d get None", position) elif len(ip_bin) != 4: self.logger.warn("ip_pool.random_get_ip position:%d len:%d", position, len(ip_bin)) else: ip_num = struct.unpack("<I", ip_bin)[0] ip = utils.ip_num_to_string(ip_num) return ip time.sleep(3) raise Exception("get ip fail.")