Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Chương trình tái xử lý liệu pháp không tự động đóng

scrapy-redis sẽ luôn đợi các url mới được đẩy vào hàng đợi redis. Khi hàng đợi trống, trình thu thập thông tin sẽ chuyển sang trạng thái không hoạt động trạng thái và chờ các url mới. Đó là những gì tôi đã sử dụng để đóng trình thu thập thông tin của mình khi hàng đợi trống.

Khi nhện ở trạng thái không hoạt động (khi nó không làm gì cả), tôi kiểm tra xem có còn thứ gì đó trong hàng đợi redis không. Nếu không, tôi đóng trình thu thập thông tin bằng close_spider . Đoạn mã sau nằm trong spider lớp:

@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. ServiceStack.Redis:Không thể kết nối:sPort:50071

  2. Đã vượt quá giới hạn kích thước bộ đệm / kết nối Redis

  3. Redis / Jedis không có điểm lỗi duy nhất và tự động chuyển đổi dự phòng

  4. Làm cách nào để vô hiệu hóa tính bền bỉ với redis?

  5. pagecache, răng giả, inodes là gì?