sql >> Database teknologi >  >> NoSQL >> Redis

Scrapy-redis-programmet lukker ikke automatisk

scrapy-redis vil altid vente på, at nye url'er bliver skubbet i redis-køen. Når køen er tom, går edderkoppen i tomgang tilstand og venter nye urls. Det var det, jeg plejede at lukke min edderkop, når køen er tom.

Når edderkoppen er i tomgang (når den ikke gør noget), tjekker jeg om der stadig er noget tilbage i redis-køen. Hvis ikke, lukker jeg edderkoppen med close_spider . Følgende kode er placeret i spider klasse:

@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. mongodb tekstsøgning med flere felter

  2. Sådan rydder du konsol i MongoDB

  3. Er GridFS hurtig og pålidelig nok til produktion?

  4. MongoDB som fillagring