82 lines
2.5 KiB
Python
82 lines
2.5 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""
|
||
-------------------------------------------------
|
||
File Name: RawProxyCheck
|
||
Description : check raw_proxy to useful
|
||
Author : JHao
|
||
date: 2019/8/6
|
||
-------------------------------------------------
|
||
Change Activity:
|
||
2019/8/6: check raw_proxy to useful
|
||
-------------------------------------------------
|
||
"""
|
||
__author__ = 'JHao'
|
||
|
||
from threading import Thread
|
||
|
||
try:
|
||
from Queue import Empty, Queue # py2
|
||
except:
|
||
from queue import Empty, Queue # py3
|
||
|
||
from Util import LogHandler
|
||
from Manager import ProxyManager
|
||
from ProxyHelper import Proxy, checkProxyUseful
|
||
|
||
|
||
class RawProxyCheck(ProxyManager, Thread):
|
||
def __init__(self, queue, thread_name):
|
||
ProxyManager.__init__(self)
|
||
Thread.__init__(self, name=thread_name)
|
||
self.log = LogHandler('raw_proxy_check')
|
||
self.queue = queue
|
||
|
||
def run(self):
|
||
self.log.info("RawProxyCheck - {} : start".format(self.name))
|
||
self.db.changeTable(self.useful_proxy_queue)
|
||
while True:
|
||
try:
|
||
proxy_json = self.queue.get(block=False)
|
||
except Empty:
|
||
self.log.info("RawProxyCheck - {} : exit".format(self.name))
|
||
break
|
||
|
||
proxy_obj = Proxy.newProxyFromJson(proxy_json)
|
||
|
||
proxy_obj, status = checkProxyUseful(proxy_obj)
|
||
if status:
|
||
if self.db.exists(proxy_obj.proxy):
|
||
self.log.info('RawProxyCheck - {} : {} validation exists'.format(self.name,
|
||
proxy_obj.proxy.ljust(20)))
|
||
else:
|
||
self.db.put(proxy_obj)
|
||
self.log.info(
|
||
'RawProxyCheck - {} : {} validation pass'.format(self.name, proxy_obj.proxy.ljust(20)))
|
||
else:
|
||
self.log.info('RawProxyCheck - {} : {} validation fail'.format(self.name, proxy_obj.proxy.ljust(20)))
|
||
self.queue.task_done()
|
||
|
||
|
||
def doRawProxyCheck():
|
||
proxy_queue = Queue()
|
||
|
||
pm = ProxyManager()
|
||
pm.db.changeTable(pm.raw_proxy_queue)
|
||
for _proxy in pm.db.getAll():
|
||
proxy_queue.put(_proxy)
|
||
pm.db.clear()
|
||
|
||
thread_list = list()
|
||
for index in range(20):
|
||
thread_list.append(RawProxyCheck(proxy_queue, "thread_%s" % index))
|
||
|
||
for thread in thread_list:
|
||
thread.start()
|
||
|
||
for thread in thread_list:
|
||
thread.join()
|
||
|
||
|
||
if __name__ == '__main__':
|
||
doRawProxyCheck()
|