MCPcopy Create free account
hub / github.com/Boris-code/feapder / reset_proxy_pool

Method reset_proxy_pool

feapder/network/proxy_pool_old.py:601–655  ·  view source on GitHub ↗

重置代理池 :param force: 是否强制重置代理池 :return:

(self, force: bool = False)

Source from the content-addressed store, hash-verified

599 return self.proxy_queue.put_nowait(proxy_item)
600
601 def reset_proxy_pool(self, force: bool = False):
602 """
603 重置代理池
604 :param force: 是否强制重置代理池
605 :return:
606 """
607 if not self.reset_lock:
608 # 必须用时调用 否则 可能存在 gevent patch前 threading就已经被导入 导致的Rlock patch失效
609 import threading
610
611 self.reset_lock = threading.RLock()
612 with self.reset_lock:
613 if (
614 force
615 or self.proxy_queue is None
616 or (
617 self.max_queue_size > 0
618 and self.proxy_queue.qsize() < self.max_queue_size / 2
619 )
620 or (
621 self.max_queue_size < 0
622 and self.proxy_queue.qsize() < self.real_max_proxy_count / 2
623 )
624 or self.no_valid_proxy_times >= 5
625 ):
626 if time.time() - self.last_reset_time < self.reset_interval:
627 self.reset_fast_count += 1
628 if self.reset_fast_count % 10 == 0:
629 self.logger.debug(
630 "代理池重置的太快了:) {}".format(self.reset_fast_count)
631 )
632 time.sleep(1)
633 else:
634 self.clear()
635 if self.proxy_queue is None:
636 import queue
637
638 self.proxy_queue = queue.Queue()
639 # TODO 这里获取到的可能重复
640 proxies_list = get_proxy_from_url(**self.kwargs)
641 self.real_max_proxy_count = len(proxies_list)
642 if 0 < self.max_queue_size < self.real_max_proxy_count:
643 proxies_list = random.sample(proxies_list, self.max_queue_size)
644 _valid_count = self.append_proxies(proxies_list)
645 self.last_reset_time = time.time()
646 self.no_valid_proxy_times = 0
647 self.logger.debug(
648 "重置代理池成功: 获取{}, 成功添加{}, 失效{}, 当前代理数{},".format(
649 len(proxies_list),
650 _valid_count,
651 len(self.invalid_proxy_dict),
652 len(self.proxy_dict),
653 )
654 )
655 return
656
657 def tag_proxy(self, proxies_list: list, flag: int, *, delay=30) -> bool:
658 """

Callers 2

getMethod · 0.95
get_random_proxyMethod · 0.95

Calls 4

clearMethod · 0.95
append_proxiesMethod · 0.95
get_proxy_from_urlFunction · 0.85
debugMethod · 0.80

Tested by

no test coverage detected