Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Program scrapy-redis tidak menutup secara otomatis

scrapy-redis akan selalu menunggu url baru didorong dalam antrian redis. Saat antrian kosong, laba-laba masuk idle menyatakan dan menunggu url baru. Itulah yang saya gunakan untuk menutup laba-laba saya setelah antrian kosong.

Saat laba-laba dalam idle (ketika tidak melakukan apa-apa), saya memeriksa apakah masih ada sesuatu yang tersisa di antrian redis. Jika tidak, saya menutup laba-laba dengan close_spider . Kode berikut terletak di spider kelas:

@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. Bagaimana Menerapkan Transaksi Terdistribusi Di Mysql, Redis, dan Mongo

  2. Bagaimana cara mengkonfigurasi koneksi Redis dengan Rails 4, Puma dan Sidekiq?

  3. nodejs, redis. periksa apakah ada kunci dan buat yang baru jika tidak

  4. Algoritma pencocokan pengguna

  5. Bagaimana cara mengeluarkan perintah HGET/GET untuk Redis Database melalui Node.js?