11. 实现代理池的启动入口

  • 目标: 把启动爬虫, 启动检测代理IP, 启动WEB服务 统一到一起
  • 思路:

    • 开启三个进程, 分别用于启动爬虫, 检测代理IP, WEB服务
  • 步骤:

    • 定义一个run方法用于启动动代理池
      • 定义一个列表, 用于存储要启动的进程
      • 创建 启动爬虫 的进程, 添加到列表中
      • 创建 启动检测 的进程, 添加到列表中
      • 创建 启动提供API服务 的进程, 添加到列表中
      • 遍历进程列表, 启动所有进程
      • 遍历进程列表, 让主进程等待子进程的完成
    • if __name__ == '__main__': 中调用run方法
  • 代码

from multiprocessing import Process
from spiders.run_spiders import RunSpider
from proxy_test import ProxyTester
from proxy_api import ProxyApi

def run():
    """总启动方法"""
    # 创建
    process_list = []
    process_list.append(Process(target=RunSpider.start, name='run_spider'))
    process_list.append(Process(target=ProxyTester.start, name='run_tester'))
    process_list.append(Process(target=ProxyApi.start, name='run_api'))

    # 启动进程
    for p in process_list:
        # 设置进程为守护进行
        p.daemon = True
        # 进程启动
        p.start()

    # 让主进程等待子进程完成
    for p in process_list:
        p.join()

if __name__ == '__main__':
    run()
  • 总结
    • 为三个模块, 提供统一启动入口
    • 开启三个进程, 分别运行, 爬虫模块, 检测模块, API模块.