sql >> Databáze >  >> NoSQL >> Redis

Program scrapy-redis se automaticky neuzavírá

scrapy-redis bude vždy čekat na vložení nových adres URL do fronty redis. Když je fronta prázdná, pavouk přejde do nečinnosti stavu a čeká na nové adresy URL. To je to, co jsem zavřel svého pavouka, jakmile je fronta prázdná.

Když je pavouk v nečinnosti (když nic nedělá), zkontroluji, zda ve frontě redis ještě něco nezbývá. Pokud ne, zavřu pavouka pomocí close_spider . Následující kód se nachází v spider třída:

@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 třídí bez ohledu na malá a velká písmena

  2. Instalace Memcached na Ubuntu 16.04/18.04 s Nginx a PHP-7.3

  3. Proč soubor Redis dump.rdb o velikosti 500 MB zabírá asi 5,0 GB paměti?

  4. Jaký je nejvyspělejší ovladač MongoDB pro C#?