ProxyValidSchedule.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. from time import sleep
  16. sys.path.append('../')
  17. from Util.utilFunction import validUsefulProxy
  18. from Manager.ProxyManager import ProxyManager
  19. from Util.LogHandler import LogHandler
  20. class ProxyValidSchedule(ProxyManager):
  21. def __init__(self):
  22. ProxyManager.__init__(self)
  23. self.log = LogHandler('valid_schedule')
  24. def __validProxy(self):
  25. """
  26. 验证代理
  27. :return:
  28. """
  29. while True:
  30. self.db.changeTable(self.useful_proxy_queue)
  31. for each_proxy in self.db.getAll():
  32. if isinstance(each_proxy, bytes):
  33. # 兼容PY3
  34. each_proxy = each_proxy.decode('utf-8')
  35. value = self.db.getvalue(each_proxy)
  36. if validUsefulProxy(each_proxy):
  37. # 成功计数器加1
  38. if value and int(value) < 1:
  39. self.db.inckey(each_proxy, 1)
  40. self.log.info('ProxyValidSchedule: {} validation pass'.format(each_proxy))
  41. else:
  42. # 失败计数器减一
  43. if value and int(value) < -5:
  44. # 计数器小于-5删除该代理
  45. self.db.delete(each_proxy)
  46. else:
  47. self.db.inckey(each_proxy, -1)
  48. self.log.info('ProxyValidSchedule: {} validation fail'.format(each_proxy))
  49. self.log.info('ProxyValidSchedule running normal')
  50. sleep(60 * 1)
  51. def main(self):
  52. self.__validProxy()
  53. def run():
  54. p = ProxyValidSchedule()
  55. p.main()
  56. if __name__ == '__main__':
  57. p = ProxyValidSchedule()
  58. p.main()