| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- # -*- coding: utf-8 -*-
- """
- -------------------------------------------------
- File Name: ProxyManager.py
- Description :
- Author : JHao
- date: 2016/12/3
- -------------------------------------------------
- Change Activity:
- 2016/12/3:
- -------------------------------------------------
- """
- __author__ = 'JHao'
- from DB.DbClient import DbClient
- from Util.GetConfig import GetConfig
- from ProxyGetter.GetFreeProxy import GetFreeProxy
- class ProxyManager(object):
- """
- ProxyManager
- """
- def __init__(self):
- self.db = DbClient()
- self.config = GetConfig()
- self.raw_proxy_queue = 'raw_proxy'
- self.useful_proxy_queue = 'useful_proxy_queue'
- def refresh(self):
- """
- fetch proxy into Db by ProxyGetter
- :return:
- """
- for proxyGetter in self.config.proxy_getter_functions:
- proxy_set = set()
- # fetch raw proxy
- for proxy in getattr(GetFreeProxy, proxyGetter.strip())():
- proxy_set.add(proxy)
- # store raw proxy
- self.db.changeTable(self.raw_proxy_queue)
- for proxy in proxy_set:
- self.db.put(proxy)
- def get(self):
- """
- return a useful proxy
- :return:
- """
- self.db.changeTable(self.useful_proxy_queue)
- return self.db.pop()
- def delete(self, proxy):
- """
- delete proxy from pool
- :param proxy:
- :return:
- """
- self.db.changeTable(self.useful_proxy_queue)
- self.db.delete(proxy)
- def getAll(self):
- """
- get all proxy from pool
- :return:
- """
- self.db.changeTable(self.useful_proxy_queue)
- return self.db.getAll()
- if __name__ == '__main__':
- pp = ProxyManager()
- pp.refresh()
|