RawProxyCheck.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. # -*- coding: utf-8 -*-
  2. """
  3. -------------------------------------------------
  4. File Name: RawProxyCheck
  5. Description : check raw_proxy to useful
  6. Author : JHao
  7. date: 2019/8/6
  8. -------------------------------------------------
  9. Change Activity:
  10. 2019/8/6: check raw_proxy to useful
  11. -------------------------------------------------
  12. """
  13. __author__ = 'JHao'
  14. from threading import Thread
  15. try:
  16. from Queue import Empty, Queue # py2
  17. except:
  18. from queue import Empty, Queue # py3
  19. from Util import LogHandler
  20. from Manager import ProxyManager
  21. from ProxyHelper import Proxy, checkProxyUseful
  22. class RawProxyCheck(ProxyManager, Thread):
  23. def __init__(self, queue, thread_name):
  24. ProxyManager.__init__(self)
  25. Thread.__init__(self, name=thread_name)
  26. self.log = LogHandler('raw_proxy_check')
  27. self.queue = queue
  28. def run(self):
  29. self.log.info("RawProxyCheck - {} : start".format(self.name))
  30. self.db.changeTable(self.useful_proxy_queue)
  31. while True:
  32. try:
  33. proxy_json = self.queue.get(block=False)
  34. except Empty:
  35. self.log.info("RawProxyCheck - {} : exit".format(self.name))
  36. break
  37. proxy_obj = Proxy.newProxyFromJson(proxy_json)
  38. proxy_obj, status = checkProxyUseful(proxy_obj)
  39. if status:
  40. self.db.put(proxy_obj)
  41. self.log.info('RawProxyCheck - {} : {} validation pass'.format(self.name, proxy_obj.proxy.ljust(20)))
  42. else:
  43. self.log.info('RawProxyCheck - {} : {} validation fail'.format(self.name, proxy_obj.proxy.ljust(20)))
  44. self.queue.task_done()
  45. def doRawProxyCheck():
  46. proxy_queue = Queue()
  47. pm = ProxyManager()
  48. pm.db.changeTable(pm.raw_proxy_queue)
  49. for _proxy in pm.db.getAll():
  50. proxy_queue.put(_proxy)
  51. pm.db.clear()
  52. thread_list = list()
  53. for index in range(20):
  54. thread_list.append(RawProxyCheck(proxy_queue, "thread_%s" % index))
  55. for thread in thread_list:
  56. thread.start()
  57. for thread in thread_list:
  58. thread.join()
  59. if __name__ == '__main__':
  60. doRawProxyCheck()