ProxyCheck.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. # -*- coding: utf-8 -*-
  2. """
  3. -------------------------------------------------
  4. File Name: ProxyCheck
  5. Description : 多线程验证useful_proxy
  6. Author : J_hao
  7. date: 2017/9/26
  8. -------------------------------------------------
  9. Change Activity:
  10. 2017/9/26: 多线程验证useful_proxy
  11. -------------------------------------------------
  12. """
  13. __author__ = 'J_hao'
  14. import sys
  15. from time import sleep
  16. from threading import Thread
  17. sys.path.append('../')
  18. from Util.utilFunction import validUsefulProxy
  19. from Manager.ProxyManager import ProxyManager
  20. from Util.LogHandler import LogHandler
  21. class ProxyCheck(ProxyManager, Thread):
  22. def __init__(self):
  23. ProxyManager.__init__(self)
  24. Thread.__init__(self)
  25. self.log = LogHandler('proxy_check')
  26. def run(self):
  27. self.db.changeTable(self.useful_proxy_queue)
  28. while True:
  29. proxy_item = self.db.pop()
  30. while proxy_item:
  31. proxy = proxy_item.get('proxy')
  32. counter = proxy_item.get('value')
  33. if validUsefulProxy(proxy):
  34. # 验证通过计数器加1, 计数在-5到1之间
  35. if counter and int(counter) < 1:
  36. self.db.put(proxy, num=int(counter) + 1)
  37. else:
  38. self.db.put(proxy)
  39. self.log.info('ProxyCheck: {} validation pass'.format(proxy))
  40. else:
  41. self.log.info('ProxyCheck: {} validation fail'.format(proxy))
  42. # 验证失败,计数器减1
  43. if counter and int(counter) < -5:
  44. self.log.info('ProxyCheck: {} fail too many, delete!'.format(proxy))
  45. self.db.delete(proxy)
  46. else:
  47. self.db.put(proxy, num=int(counter) - 1)
  48. proxy_item = self.db.pop()
  49. sleep(60 * 5)
  50. if __name__ == '__main__':
  51. p = ProxyCheck()
  52. p.run()