summaryrefslogtreecommitdiff
path: root/requests_cache/backends/base.py
diff options
context:
space:
mode:
authorJordan Cook <jordan.cook@pioneer.com>2021-03-24 17:00:22 -0500
committerJordan Cook <jordan.cook@pioneer.com>2021-03-30 17:42:21 -0500
commit366c3145ef579c39227bb1570d85f2d99dc2bbf6 (patch)
treed9bd99653bc448952cd94221c3a7a347ba40608f /requests_cache/backends/base.py
parenta46096fc4df312cc00ef427b4fd629af3d8a36b0 (diff)
downloadrequests-cache-366c3145ef579c39227bb1570d85f2d99dc2bbf6.tar.gz
Use url-normalize for additional URL normalization for cache keys
Diffstat (limited to 'requests_cache/backends/base.py')
-rw-r--r--requests_cache/backends/base.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/requests_cache/backends/base.py b/requests_cache/backends/base.py
index e0f08d9..7824c15 100644
--- a/requests_cache/backends/base.py
+++ b/requests_cache/backends/base.py
@@ -9,6 +9,7 @@ from typing import Iterable, List, Union
from urllib.parse import parse_qsl, urlencode, urlparse, urlunparse
import requests
+from url_normalize import url_normalize
from ..response import AnyResponse, CachedResponse, ExpirationTime
@@ -70,7 +71,9 @@ class BaseCache:
response = self.responses[key]
response.reset() # In case response was in memory and raw content has already been read
return response
- except (AttributeError, KeyError, TypeError, ValueError, pickle.PickleError) as e:
+ except KeyError:
+ return default
+ except (AttributeError, TypeError, ValueError, pickle.PickleError) as e:
logger.error(f'Unable to deserialize response with key {key}: {str(e)}')
return default
@@ -117,7 +120,7 @@ class BaseCache:
try:
response = self.responses[key]
except Exception as e:
- logger.info(f'Unable to deserialize response with key {key}: {str(e)}')
+ logger.debug(f'Unable to deserialize response with key {key}: {str(e)}')
self.delete(key)
continue
@@ -141,6 +144,7 @@ class BaseCache:
def create_key(self, request: requests.PreparedRequest) -> str:
url = self._remove_ignored_url_parameters(request)
+ url = url_normalize(url)
body = self._remove_ignored_body_parameters(request)
key = hashlib.sha256()
key.update(_encode(request.method.upper()))