|
@@ -13,7 +13,7 @@
|
|
|
__author__ = 'J_hao'
|
|
__author__ = 'J_hao'
|
|
|
|
|
|
|
|
import sys
|
|
import sys
|
|
|
-from time import sleep
|
|
|
|
|
|
|
+import threading
|
|
|
from threading import Thread
|
|
from threading import Thread
|
|
|
|
|
|
|
|
sys.path.append('../')
|
|
sys.path.append('../')
|
|
@@ -26,32 +26,36 @@ FAIL_COUNT = 2 # 校验失败次数, 超过次数删除代理
|
|
|
|
|
|
|
|
|
|
|
|
|
class ProxyCheck(ProxyManager, Thread):
|
|
class ProxyCheck(ProxyManager, Thread):
|
|
|
- def __init__(self):
|
|
|
|
|
|
|
+ def __init__(self, queue, item_dict):
|
|
|
ProxyManager.__init__(self)
|
|
ProxyManager.__init__(self)
|
|
|
Thread.__init__(self)
|
|
Thread.__init__(self)
|
|
|
self.log = LogHandler('proxy_check')
|
|
self.log = LogHandler('proxy_check')
|
|
|
|
|
+ self.queue = queue
|
|
|
|
|
+ self.item_dict = item_dict
|
|
|
|
|
|
|
|
def run(self):
|
|
def run(self):
|
|
|
self.db.changeTable(self.useful_proxy_queue)
|
|
self.db.changeTable(self.useful_proxy_queue)
|
|
|
- while True:
|
|
|
|
|
- for proxy, count in self.db.getAll().items():
|
|
|
|
|
- if validUsefulProxy(proxy):
|
|
|
|
|
- # 验证通过计数器减1
|
|
|
|
|
- if count and int(count) > 0:
|
|
|
|
|
- self.db.put(proxy, num=int(count) - 1)
|
|
|
|
|
- else:
|
|
|
|
|
- pass
|
|
|
|
|
- self.log.info('ProxyCheck: {} validation pass'.format(proxy))
|
|
|
|
|
|
|
+ while self.queue.qsize():
|
|
|
|
|
+ proxy = self.queue.get()
|
|
|
|
|
+ count = self.item_dict[proxy]
|
|
|
|
|
+ if validUsefulProxy(proxy):
|
|
|
|
|
+ # 验证通过计数器减1
|
|
|
|
|
+ if count and int(count) > 0:
|
|
|
|
|
+ self.db.put(proxy, num=int(count) - 1)
|
|
|
else:
|
|
else:
|
|
|
- self.log.info('ProxyCheck: {} validation fail'.format(proxy))
|
|
|
|
|
- if count and int(count) > FAIL_COUNT:
|
|
|
|
|
- self.log.info('ProxyCheck: {} fail too many, delete!'.format(proxy))
|
|
|
|
|
- self.db.delete(proxy)
|
|
|
|
|
- else:
|
|
|
|
|
- self.db.put(proxy, num=int(count) + 1)
|
|
|
|
|
- sleep(60 * 5)
|
|
|
|
|
|
|
+ pass
|
|
|
|
|
+ print('ProxyCheck: {} validation pass'.format(proxy))
|
|
|
|
|
+ else:
|
|
|
|
|
+ print('ProxyCheck: {} validation fail'.format(proxy))
|
|
|
|
|
+ if count and int(count) > FAIL_COUNT:
|
|
|
|
|
+ print('ProxyCheck: {} fail too many, delete!'.format(proxy))
|
|
|
|
|
+ self.db.delete(proxy)
|
|
|
|
|
+ else:
|
|
|
|
|
+ self.db.put(proxy, num=int(count) + 1)
|
|
|
|
|
+ self.queue.task_done()
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
if __name__ == '__main__':
|
|
|
- p = ProxyCheck()
|
|
|
|
|
- p.run()
|
|
|
|
|
|
|
+ # p = ProxyCheck()
|
|
|
|
|
+ # p.run()
|
|
|
|
|
+ pass
|