美文网首页
分布式scrapy_redis源码总结,及其架构

分布式scrapy_redis源码总结,及其架构

作者: Python之战 | 来源:发表于2019-03-19 23:04 被阅读0次

    分布式scrapy的组件源码介绍完了,大致总结一下,相关组件目录如下:

    RedisSpider的调度队列实现过程及其源码

    scrapy中scrapy_redis分布式内置pipeline源码及其工作原理

    scrapy分布式调度源码及其实现过程

    scrapy分布式Spider源码分析及实现过程

    scrapy分布式去重组件源码及其实现过程

    scrapy_redis中序列化源码及其在程序设计中的应用

    scrapy_redis分布式组件Connection源码解读及工作原理

    其架构如图:

    image

    在对比scrapy架构:

    image

    在架构上scrapy_redis比scrapy多了一个中介Redis,正是通过Redis实现的去重和数据储存,同时scrapy_redis实现了四个组件的重写,Scheduler(调度)、Duplication Filter(去重)、 Item Pipeline(数据管道)、Base Spider(爬虫基类)

    分布式爬虫运行机制如下:

    • 要求运行在不同机器上的源码一致,尤其是Redis的配置,相同的Redis才能实现共同去重和分布式爬虫之间的通信,同时相应的在配置文件setting.py中启用scrapy_Rediszi自定义实现的组件
    DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
    SCHEDULER = "scrapy_redis.scheduler.Scheduler"
    SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderPriorityQueue"
    
    

    至于pipeline在需要使用Redis储存数据的情况下也可以启用

    • Spider开始运行,构造Request对象,然后根据Request对象的URL及其其他headers信息对Request去重
    • 去重后的Request,会被调度序列化后放入Redis实现的队列或者堆栈或者优先级队列中
    • 适当时候会取出Request交给下载器,然后开始下载,下载完的resposne对象会交给Spider解析,从而继续上一个流程。

    相关文章

      网友评论

          本文标题:分布式scrapy_redis源码总结,及其架构

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