ProxyValidSchedule.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. # -*- coding: utf-8 -*-
  2. """
  3. -------------------------------------------------
  4. File Name: ProxyValidSchedule.py
  5. Description : 验证useful_proxy_queue中的代理,将不可用的移出
  6. Author : JHao
  7. date: 2017/3/31
  8. -------------------------------------------------
  9. Change Activity:
  10. 2017/3/31: 验证useful_proxy_queue中的代理
  11. -------------------------------------------------
  12. """
  13. __author__ = 'JHao'
  14. import sys
  15. import time
  16. try:
  17. from Queue import Queue # py3
  18. except:
  19. from queue import Queue # py2
  20. sys.path.append('../')
  21. from Schedule.ProxyCheck import ProxyCheck
  22. from Manager.ProxyManager import ProxyManager
  23. class ProxyValidSchedule(ProxyManager, object):
  24. def __init__(self):
  25. ProxyManager.__init__(self)
  26. self.queue = Queue()
  27. self.proxy_item = dict()
  28. def __validProxy(self, threads=10):
  29. """
  30. 验证useful_proxy代理
  31. :param threads: 线程数
  32. :return:
  33. """
  34. thread_list = list()
  35. for index in range(threads):
  36. thread_list.append(ProxyCheck(self.queue, self.proxy_item))
  37. for thread in thread_list:
  38. thread.daemon = True
  39. thread.start()
  40. for thread in thread_list:
  41. thread.join()
  42. def main(self):
  43. self.putQueue()
  44. while True:
  45. if not self.queue.empty():
  46. self.log.info("Start valid useful proxy")
  47. self.__validProxy()
  48. else:
  49. self.log.info('Valid Complete! sleep 5 minutes.')
  50. time.sleep(60 * 5)
  51. self.putQueue()
  52. def putQueue(self):
  53. self.db.changeTable(self.useful_proxy_queue)
  54. self.proxy_item = self.db.getAll()
  55. for item in self.proxy_item:
  56. self.queue.put(item)
  57. def run():
  58. p = ProxyValidSchedule()
  59. p.main()
  60. if __name__ == '__main__':
  61. p = ProxyValidSchedule()
  62. p.main()