Redis
 sql >> база данни >  >> NoSQL >> Redis

Програмата scrapy-redis не се затваря автоматично

scrapy-redis винаги ще чака нови URL адреси да бъдат натиснати в опашката за redis. Когато опашката е празна, паякът преминава впразен ход състояние и чака нови URL адреси. Това е, което използвах, за да затворя моя паяк, след като опашката е празна.

Когато паякът е впразен ход (когато не прави нищо), проверявам дали все още има нещо останало в опашката за redis. Ако не, затварям паяка с close_spider . Следният код се намира в spider клас:

@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
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Производителност на Redis срещу Disk в приложение за кеширане

  2. Оптимизиране на едновременни заявки на ImageMagick с помощта на redis/php-resque

  3. ZRANGESTORE преди Redis 6.2.0

  4. Грешка в Django Channels - Не може да се импортира BACKEND 'asgi_redis.RedisChannelLayer'

  5. Redis - Свържете се с отдалечен сървър