码迷,mamicode.com
首页 > 其他好文 > 详细

ken桑带你读源码 之 scrapy_redis

时间:2017-12-23 11:52:08      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:读取   异步   单点   spider   文件   上线   schedule   rto   set   

首先更大家说下  正式部署上线的爬虫会有分布式爬虫的需求  而且原本scrapy 的seen (判断重复url的池  不知道用啥词  已抓url吧 )  保存在磁盘 

url 队列 也是保存在磁盘 (保存在磁盘 对爬虫效率会极大影响)   如果是断点重爬 声明 jobdir 百分百是保存在磁盘   不申明jobdir 的话保存在内存 但会有单点内存的上限问题   所以说那么多 总之  scrapy_redis  是爬虫工程师必须了解的 

scrapy_redis/dupefilter.py

 判断已抓取url  主要是声明 dupefilter_key  作为 redis key  判断是否已抓取  第 100行  added = self.server.sadd(self.key, fp)  return added == 0   用到redis  集合set  

scrapy_redis/defaults.py

 默认配置文件  

scrapy_redis/queue.py

 队列文件  默认PriorityQueue  用到 redis 有序队列 self.server.execute_command(‘ZADD‘, self.key, score, data)  留意 100行 score = -request.priority  redis 有序集合是越小 排序越优先 加了-  等于说是反过来 

pop 用到redis的事务  112行 pipe = self.server.pipeline()  

scrapy_redis/pipelines.py

63 行   把  item  push 到redis    61行   return deferToThread(self._process_item, item, spider)   返回非阻塞 异步函数

scrapy_redis/scheduler.py 

 

引擎文件  主要是处理队列的  push pop      154行 判断去重   164  加入超时 用作 阻塞 pop  如果有多条进程 读取  队列 必须用到阻塞保证一致性  

 

ken桑带你读源码 之 scrapy_redis

标签:读取   异步   单点   spider   文件   上线   schedule   rto   set   

原文地址:http://www.cnblogs.com/gzwwj/p/8092276.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!