美文网首页大数据 爬虫Python AI Sql
调度器模块-Python爬虫之构建代理池(完结篇)

调度器模块-Python爬虫之构建代理池(完结篇)

作者: 昵称你也抢我的 | 来源:发表于2018-10-16 21:02 被阅读3次

    我们的四大功能模块数据库模块代理源获取模块测试模块WEB API模块都已经完成了,他们各自分工,接下来我们需要一个调度器模块,来对这些功能模块进行调度运行。

    设计思路

    每个模块应该独立一个进程进行运行。对于代理源的获取,为了保持代理更新,应该每隔一段时间,进行一次代理源的获取。测试模块也是一样,我们应该每隔一段时间进行一次检测。

    开发

    MyProxyPool项目中新建scheduler.py

    from multiprocessing import Process
    from api import app
    from getter import Getter
    from tester import Tester
    import time
    
    # 测试周期
    TESTER_CYCLE = 20
    # 获取周期
    GETTER_CYCLE = 20
    
    # 是否允许测试服务
    TESTER_ENABLED = True
    # 是否允许获取服务
    GETTER_ENABLED = True
    # 是否启动api服务
    API_ENABLED = True
    
    
    class Scheduler:
        def schedule_tester(self, cycle=TESTER_CYCLE):
            """
            定时测试代理
            :param cycle: 定时时间
            """
            tester = Tester()
            while True:
                print('测试器运行')
                tester.run()
                time.sleep(cycle)
    
        def schedule_getter(self, cycle=GETTER_CYCLE):
            """
            定时获取代理
            :param cycle:
            """
            getter = Getter()
            while True:
                print('开始定时获取代理')
                getter.run()
                time.sleep(cycle)
    
        def schedule_api(self):
            """
            开启api
            :return:
            """
            app.run()
    
        def run(self):
            print('代理池调度器开始运行')
            if GETTER_ENABLED:
                getter_process = Process(target=self.schedule_getter)
                getter_process.start()
            if TESTER_ENABLED:
                tester_process = Process(target=self.schedule_tester)
                tester_process.start()
            if API_ENABLED:
                api_process = Process(target=self.schedule_api)
                api_process.run()
    
    
    if __name__ == '__main__':
        Scheduler().run()
    
    
    

    运行scheduler调度器模块,就可以启动我们整个代理池服务了。

    到此,我们的代理池已经完整的构建好了,当然,这个代理池还是有很多地方需要完善的,这里重点是讲解设计个开发思路。

    本节代码戳我

    完整代码戳我

    相关文章

      网友评论

        本文标题:调度器模块-Python爬虫之构建代理池(完结篇)

        本文链接:https://www.haomeiwen.com/subject/pfdkzftx.html