scrapy-redis中master和slave的通信

来源:10-4 scrapy-redis编写分布式爬虫代码

慕函数7358036

2020-04-05

老师,从这节课看scrapy-redis的入口是name:start_urls,那slave端要如何获取master端存入name:requests的请求呢,从master那yield的话应该也没办法回调slave上的处理函数吧,是有提供方法还是需要我自己重写相关的源码

写回答

1回答

bobby

2020-04-07

//img.mukewang.com/szimg/5e8c500609d8150408990801.jpg 如果是slave 那么重写这个方法就行了, 记住 master不要这么写, 我把这个代码给你贴一下:

def next_requests(self):
    found = 0
    # TODO: Use redis pipeline execution.
    while found < self.redis_batch_size:
        req = self.crawler.engine.slot.scheduler.queue.pop(0)
        if not req:
            # Queue empty.
            break
        if req:
            yield req
            found += 1
        else:
            self.logger.debug("Request not made from data: %r", req.url)

    if found:
        self.logger.debug("Read %s requests from '%s'", found, self.redis_key)


0
7
bobby
回复
慕函数7358036
好的,
2020-04-10
共7条回复

Scrapy打造搜索引擎 畅销4年的Python分布式爬虫课

带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎

5807 学习 · 6290 问题

查看课程