# -*- coding: utf-8 -*- # !/usr/bin/env python """ ------------------------------------------------- File Name: ProxyRefreshSchedule.py Description : 代理定时刷新 Author : JHao date: 2016/12/4 ------------------------------------------------- Change Activity: 2016/12/4: 代理定时刷新 2017/03/06: 使用LogHandler添加日志 ------------------------------------------------- """ import sys import time from multiprocessing import Process from apscheduler.schedulers.blocking import BlockingScheduler sys.path.append('../') from Util.utilFunction import validUsefulProxy from Manager.ProxyManager import ProxyManager from Util.LogHandler import LogHandler __author__ = 'JHao' class ProxyRefreshSchedule(ProxyManager): """ 代理定时刷新 """ def __init__(self): ProxyManager.__init__(self) self.log = LogHandler('refresh_schedule') def valid_proxy(self): """ valid_proxy :return: """ self.db.changeTable(self.raw_proxy_queue) raw_proxy = self.db.pop() self.log.info('%s start valid proxy' % time.ctime()) while raw_proxy: if validUsefulProxy(raw_proxy): self.db.changeTable(self.useful_proxy_queue) self.db.put(raw_proxy) self.log.debug('proxy: %s validation passes' % raw_proxy) else: self.log.debug('proxy: %s validation fail' % raw_proxy) pass self.db.changeTable(self.raw_proxy_queue) raw_proxy = self.db.pop() self.log.info('%s valid proxy complete' % time.ctime()) def refresh_pool(): pp = ProxyRefreshSchedule() pp.valid_proxy() def main(process_num=10): p = ProxyRefreshSchedule() # 获取新代理 p.refresh() # 检验新代理 pl = [] for num in range(process_num): proc = Process(target=refresh_pool, args=()) pl.append(proc) for num in range(process_num): pl[num].start() for num in range(process_num): pl[num].join() if __name__ == '__main__': # main() sched = BlockingScheduler() sched.add_job(main, 'interval', minutes=10) sched.start()