示例#1
0
 def all(self) -> List[Proxy]:
     """
     get all proxies
     :return: list of proxies
     """
     return convert_proxy_or_proxies(
         self.db.zrangebyscore(REDIS_KEY, PROXY_SCORE_MIN, PROXY_SCORE_MAX))
示例#2
0
 def batch(self, start, end) -> List[Proxy]:
     """
     get batch of proxies
     :param start: start index
     :param end: end index
     :return: list of proxies
     """
     return convert_proxy_or_proxies(
         self.db.zrevrange(REDIS_KEY, start, end - 1))
示例#3
0
 def random(self) -> Proxy:
     """
     get random proxy
     firstly try to get proxy with max score
     if not exists, try to get proxy by rank
     if not exists, raise error
     :return: proxy, like 8.8.8.8:8
     """
     # try to get proxy with max score
     proxies = self.db.zrangebyscore(REDIS_KEY, PROXY_SCORE_MAX, PROXY_SCORE_MAX)#获得分数最大的ip地址
     if len(proxies):
         return convert_proxy_or_proxies(choice(proxies))#随机选择
     # else get proxy by rank
     proxies = self.db.zrevrange(REDIS_KEY, PROXY_SCORE_MIN, PROXY_SCORE_MAX)#如果最高分ip不存在则按照排名获取
     if len(proxies):
         return convert_proxy_or_proxies(choice(proxies))
     # else raise error
     raise PoolEmptyException
示例#4
0
 def batch(self, cursor, count) -> List[Proxy]:
     """
     get batch of proxies
     :param cursor: scan cursor
     :param count: scan count
     :return: list of proxies
     """
     cursor, proxies = self.db.zscan(REDIS_KEY, cursor, count=count)
     return cursor, convert_proxy_or_proxies([i[0] for i in proxies])#返回指定数量的ip地址