diff options
| author | Jordan Cook <jordan.cook@pioneer.com> | 2022-04-10 15:39:08 -0500 |
|---|---|---|
| committer | Jordan Cook <jordan.cook@pioneer.com> | 2022-04-10 17:54:53 -0500 |
| commit | 91ac4fdd7d3ca5853d5362d4352bda896220681c (patch) | |
| tree | 75f39070cb9794241aeb3823dee1b8f72b8e8361 /requests_cache/backends/base.py | |
| parent | b96d9ed4b615e4f6c9d6b4db6679fb843c5319e7 (diff) | |
| download | requests-cache-91ac4fdd7d3ca5853d5362d4352bda896220681c.tar.gz | |
WIP: Add faster implementation of removing invalid redirects in SQL
Diffstat (limited to 'requests_cache/backends/base.py')
| -rw-r--r-- | requests_cache/backends/base.py | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/requests_cache/backends/base.py b/requests_cache/backends/base.py index 472ba9f..7f44af4 100644 --- a/requests_cache/backends/base.py +++ b/requests_cache/backends/base.py @@ -96,13 +96,6 @@ class BaseCache: for r in response.history: self.redirects[self.create_key(r.request)] = cache_key - def bulk_delete(self, keys: Iterable[str]): - """Remove multiple responses and their associated redirects from the cache""" - self.responses.bulk_delete(keys) - # Remove any redirects that no longer point to an existing response - invalid_redirects = [k for k, v in self.redirects.items() if v not in self.responses] - self.redirects.bulk_delete(set(keys) | set(invalid_redirects)) - def clear(self): """Delete all items from the cache""" logger.info('Clearing all items from the cache') @@ -187,6 +180,16 @@ class BaseCache: for key, response in keys_to_update.items(): self.responses[key] = response + def bulk_delete(self, keys: Iterable[str]): + """Remove multiple responses and their associated redirects from the cache""" + self.responses.bulk_delete(keys) + self.remove_invalid_redirects() + + def remove_invalid_redirects(self): + """Remove any redirects that no longer point to an existing response""" + invalid_redirects = [k for k, v in self.redirects.items() if v not in self.responses] + self.redirects.bulk_delete(invalid_redirects) + def response_count(self, check_expiry=False) -> int: """Get the number of responses in the cache, excluding invalid (unusable) responses. Can also optionally exclude expired responses. |
