diff options
| author | Jordan Cook <jordan.cook@pioneer.com> | 2022-04-18 14:03:18 -0500 |
|---|---|---|
| committer | Jordan Cook <jordan.cook@pioneer.com> | 2022-04-18 14:15:29 -0500 |
| commit | f174ce3d0542d3823b93448e4c4ef6c2cef14179 (patch) | |
| tree | b0f711885c107c3fbc621c8bfd690b9de6a83842 /requests_cache | |
| parent | 97a6a19035f4a68e7e4689fc0a1cec6e7781c4a4 (diff) | |
| download | requests-cache-f174ce3d0542d3823b93448e4c4ef6c2cef14179.tar.gz | |
Close database connections (if applicable) on CachedSession.__exit__ and close()
Diffstat (limited to 'requests_cache')
| -rw-r--r-- | requests_cache/backends/base.py | 9 | ||||
| -rw-r--r-- | requests_cache/backends/mongodb.py | 3 | ||||
| -rw-r--r-- | requests_cache/backends/redis.py | 3 | ||||
| -rw-r--r-- | requests_cache/session.py | 5 |
4 files changed, 20 insertions, 0 deletions
diff --git a/requests_cache/backends/base.py b/requests_cache/backends/base.py index 250b5e1..0a551ea 100644 --- a/requests_cache/backends/base.py +++ b/requests_cache/backends/base.py @@ -100,6 +100,12 @@ class BaseCache: self.responses.clear() self.redirects.clear() + def close(self): + """Close any open backend connections""" + logger.debug('Closing backend connections') + self.responses.close() + self.redirects.close() + def create_key(self, request: PreparedRequest = None, **kwargs) -> str: """Create a normalized cache key from a request object""" key_fn = self._settings.key_fn or create_key @@ -272,6 +278,9 @@ class BaseStorage(MutableMapping, ABC): except KeyError: pass + def close(self): + """Close any open backend connections""" + def __str__(self): return str(list(self.keys())) diff --git a/requests_cache/backends/mongodb.py b/requests_cache/backends/mongodb.py index 7623319..6d4175d 100644 --- a/requests_cache/backends/mongodb.py +++ b/requests_cache/backends/mongodb.py @@ -136,6 +136,9 @@ class MongoDict(BaseStorage): def clear(self): self.collection.drop() + def close(self): + self.connection.close() + class MongoPickleDict(MongoDict): """Same as :class:`MongoDict`, but serializes values before saving. diff --git a/requests_cache/backends/redis.py b/requests_cache/backends/redis.py index d79af35..5836714 100644 --- a/requests_cache/backends/redis.py +++ b/requests_cache/backends/redis.py @@ -102,6 +102,9 @@ class RedisDict(BaseStorage): def clear(self): self.bulk_delete(self.keys()) + def close(self): + self.connection.close() + def keys(self): return [ decode(key).replace(f'{self.namespace}:', '') diff --git a/requests_cache/session.py b/requests_cache/session.py index 68d0c68..9f46d0e 100644 --- a/requests_cache/session.py +++ b/requests_cache/session.py @@ -292,6 +292,11 @@ class CacheMixin(MIXIN_BASE): finally: self.settings.disabled = False + def close(self): + """Close the session and any open backend connections""" + super().close() + self.cache.close() + def remove_expired_responses(self, expire_after: ExpirationTime = None): """Remove expired responses from the cache, optionally with revalidation |
