context.py 934 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. class AkshareConfig:
  2. _instance = None
  3. def __new__(cls):
  4. if cls._instance is None:
  5. cls._instance = super().__new__(cls)
  6. cls._instance.proxies = None
  7. return cls._instance
  8. @classmethod
  9. def set_proxies(cls, proxies):
  10. cls().proxies = proxies
  11. @classmethod
  12. def get_proxies(cls):
  13. return cls().proxies
  14. config = AkshareConfig()
  15. # 导出 set_proxies 函数
  16. def set_proxies(proxies):
  17. config.set_proxies(proxies)
  18. def get_proxies():
  19. return config.get_proxies()
  20. class ProxyContext:
  21. def __init__(self, proxies):
  22. self.proxies = proxies
  23. self.old_proxies = None
  24. def __enter__(self):
  25. self.old_proxies = config.get_proxies()
  26. config.set_proxies(self.proxies)
  27. return self
  28. def __exit__(self, exc_type, exc_val, exc_tb):
  29. config.set_proxies(self.old_proxies)
  30. return False # 不处理异常