2016-08-31 8 views
2

私はscrapy.downloadermiddlewares.httpcache.HttpCacheMiddlewareを使用して、スクラピー要求をキャッシュしています。ステータスが200の場合にのみキャッシュするようにしたいと思います。デフォルトの動作ですか?または 200以外にする場合は、HTTPCACHE_IGNORE_HTTP_CODESと指定する必要がありますか?キャッシュ200のみの処理

答えて

0

はい、デフォルトでは、HttpCacheMiddlewareは、要求のためにDummyPolicyを実行します。

class DummyPolicy(object): 

    def __init__(self, settings): 
     self.ignore_http_codes = [int(x) for x in settings.getlist('HTTPCACHE_IGNORE_HTTP_CODES')] 

    def should_cache_response(self, response, request): 
     return response.status not in self.ignore_http_codes 

だから、現実にはあなたもこれを拡張することができます:あなたはすべてのものにHTTPCACHE_IGNORE_HTTP_CODESを設定する必要がありますので、200

Here's the source for the DummyPolicy そして、これらは、実際に問題がラインである以外はかなりそれ自身の特別な何もしませんshould_cache_response()200を明示的にチェックするもの、つまりreturn response.status == 200に上書きし、HTTPCACHE_POLICY settingを使用してキャッシュポリシーとして設定します。

関連する問題