sql >> Databasteknik >  >> NoSQL >> Redis

Programmet scrapy-redis stängs inte automatiskt

scrapy-redis kommer alltid att vänta på att nya webbadresser ska pushas i redis-kön. När kön är tom går spindeln i tomgång stat och väntar på nya webbadresser. Det är vad jag brukade stänga min spindel när kön är tom.

När spindeln är i tomgång (när det inte gör något) kollar jag om det fortfarande finns något kvar i redis-kön. Om inte, stänger jag spindeln med close_spider . Följande kod finns i spider klass:

@classmethod
def from_crawler(cls, crawler, *args, **kwargs):
    from_crawler = super(SerpSpider, cls).from_crawler
    spider = from_crawler(crawler, *args, **kwargs)
    crawler.signals.connect(spider.idle, signal=scrapy.signals.spider_idle)
    return spider


def idle(self):
    if self.q.llen(self.redis_key) <= 0:
        self.crawler.engine.close_spider(self, reason='finished')


  1. Redis statistik

  2. Skalbart sätt att logga sidförfrågningsdata från en PHP-applikation?

  3. Installera MongoDB på Windows

  4. Hur säkerställer du att dina MongoDB-kluster kan överleva Amazon AWS-avbrott?