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. AmazonEC2にMongoDBをデプロイするための6つのベストプラクティス

    2. MongoDB:埋め込みドキュメントの一意キー

    3. RedisクライアントAPIの使用を開始する

    4. MongoDBで日付から週を取得する3つの方法