ProxyManager.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. """
  4. -------------------------------------------------
  5. File Name: ProxyManager.py
  6. Description :
  7. Author : JHao
  8. date: 2016/12/3
  9. -------------------------------------------------
  10. Change Activity:
  11. 2016/12/3:
  12. -------------------------------------------------
  13. """
  14. __author__ = 'JHao'
  15. from DB.DbClient import DbClient
  16. from Util.GetConfig import GetConfig
  17. from ProxyGetter.getFreeProxy import GetFreeProxy
  18. class ProxyManager(object):
  19. """
  20. ProxyManager
  21. """
  22. def __init__(self):
  23. self.db = DbClient()
  24. self.config = GetConfig()
  25. self.raw_proxy_queue = 'raw_proxy'
  26. self.useful_proxy_queue = 'useful_proxy_queue'
  27. def refresh(self):
  28. """
  29. fetch proxy into Db by ProxyGetter
  30. :return:
  31. """
  32. for proxyGetter in self.config.proxy_getter_functions:
  33. proxy_set = set()
  34. # fetch raw proxy
  35. for proxy in getattr(GetFreeProxy, proxyGetter.strip())():
  36. proxy_set.add(proxy)
  37. # store raw proxy
  38. self.db.changeTable(self.raw_proxy_queue)
  39. for proxy in proxy_set:
  40. self.db.put(proxy)
  41. def get(self):
  42. """
  43. return a useful proxy
  44. :return:
  45. """
  46. self.db.changeTable(self.useful_proxy_queue)
  47. return self.db.pop()
  48. def delete(self, proxy):
  49. """
  50. delete proxy from pool
  51. :param proxy:
  52. :return:
  53. """
  54. self.db.changeTable(self.useful_proxy_queue)
  55. self.db.delete(proxy)
  56. def getAll(self):
  57. """
  58. get all proxy from pool
  59. :return:
  60. """
  61. self.db.changeTable(self.useful_proxy_queue)
  62. return self.db.getAll()
  63. if __name__ == '__main__':
  64. pp = ProxyManager()
  65. pp.refresh()