diff options
Diffstat (limited to 'requests_cache')
-rw-r--r-- | requests_cache/backends/base.py | 12 | ||||
-rw-r--r-- | requests_cache/backends/sqlite.py | 5 |
2 files changed, 17 insertions, 0 deletions
diff --git a/requests_cache/backends/base.py b/requests_cache/backends/base.py index 2c5b0b6..9814799 100644 --- a/requests_cache/backends/base.py +++ b/requests_cache/backends/base.py @@ -203,6 +203,18 @@ class BaseCache: ): yield response + def recreate_keys(self): + """Recreate cache keys for all previously cached responses""" + logger.debug('Recreating all cache keys') + old_keys = list(self.responses.keys()) + + for old_cache_key in old_keys: + response = self.responses[old_cache_key] + new_cache_key = self.create_key(response.request) + if new_cache_key != old_cache_key: + self.responses[new_cache_key] = response + del self.responses[old_cache_key] + def reset_expiration(self, expire_after: ExpirationTime = None): """Set a new expiration value to set on existing cache items diff --git a/requests_cache/backends/sqlite.py b/requests_cache/backends/sqlite.py index 17a34c2..cbfc296 100644 --- a/requests_cache/backends/sqlite.py +++ b/requests_cache/backends/sqlite.py @@ -120,6 +120,11 @@ class SQLiteCache(BaseCache): else: return super().filter(valid, expired, **kwargs) + def recreate_keys(self): + """A more efficient implementation of :py:meth:`BaseCache.recreate_keys`""" + with self.responses.bulk_commit(): + super().recreate_keys() + def sorted( self, key: str = 'expires', |