Base¶
Base classes for all cache backends
Base class for cache backends. |
|
Base class for client-agnostic storage implementations. |
|
A basic dict wrapper class for non-persistent, in-memory storage |
- class requests_cache.backends.base.BaseCache(cache_name='http_cache', **kwargs)[source]¶
Bases:
objectBase class for cache backends. Can be used as a non-persistent, in-memory cache.
This manages higher-level cache operations, including:
Saving and retrieving responses
Managing redirect history
Convenience methods for general cache info
Dict-like wrapper methods around the underlying storage
Notes:
Lower-level storage operations are handled by
BaseStorage.To extend this with your own custom backend, see Custom Backends.
- Parameters:
cache_name (
str) – Cache prefix or namespace, depending on backendserializer – Serializer name or instance
kwargs – Additional backend-specific keyword arguments
- contains(key=None, request=None, url=None, verify=True)[source]¶
Check if the specified request is cached
- Parameters:
request (
Union[Request,PreparedRequest,CachedRequest,None]) – Check for a matching request, according to current request matching settingsurl (
Optional[str]) – Check for a matching GET request with the specified URLverify (
bool) – Check for requests with or without SSL verification
- create_key(request, match_headers=None, **kwargs)[source]¶
Create a normalized cache key from a request object
- Parameters:
request (
Union[Request,PreparedRequest,CachedRequest])
- Return type:
- property db_path: str | Path¶
Path to the cache database file.
- Raises:
NotImplementedError – For backends that do not use a file-based database.
- delete(*keys, expired=False, invalid=False, older_than=None, requests=None, urls=None, verify=True)[source]¶
Remove responses from the cache according one or more conditions.
- Parameters:
keys (
str) – Remove responses with these cache keysexpired (
bool) – Remove all expired responsesinvalid (
bool) – Remove all invalid responses (that can’t be deserialized with current settings)older_than (
Union[None,int,float,str,datetime,timedelta]) – Remove responses older than this value, relative toresponse.created_atrequests (
Optional[Iterable[Union[Request,PreparedRequest,CachedRequest]]]) – Remove matching responses, according to current request matching settingsurls (
Optional[Iterable[str]]) – Remove matching GET requests for the specified URL(s)verify (
bool) – Set toFalseto remove responses without SSL verification
- filter(valid=True, expired=True, invalid=False, older_than=None)[source]¶
Get responses from the cache, with optional filters for which responses to include:
- Parameters:
valid (
bool) – Include valid and unexpired responses; set toFalseto get only expired/invalid/old responsesexpired (
bool) – Include expired responsesinvalid (
bool) – Include invalid responses (as an emptyCachedResponse)older_than (
Union[None,int,float,str,datetime,timedelta]) – Get responses older than this value, relative toresponse.created_at
- Return type:
- get_response(key, default=None)[source]¶
Retrieve a response from the cache, if it exists
- Parameters:
key (
str) – Cache key for the responsedefault – Value to return if key is not in the cache
- Return type:
- reset_expiration(expire_after=None)[source]¶
Set a new expiration value to set on existing cache items
- class requests_cache.backends.base.BaseStorage(serializer=None, decode_content=False, **kwargs)[source]¶
Bases:
MutableMapping[KT,VT],ABCBase class for client-agnostic storage implementations. Notes:
This provides a common dictionary-like interface for the underlying storage operations (create, read, update, delete).
One
BaseStorageinstance corresponds to a single table/hash/collection, or whatever the backend-specific equivalent may be.BaseStoragesubclasses contain no behavior specific torequests, which are handled byBaseCachesubclasses.BaseStoragealso contains a serializer object (defaulting topickle), which determines howCachedResponseobjects are saved internally. See Serializers for details.
- Parameters:
serializer (
Union[str,SerializerPipeline,Stage,None]) – Custom serializer that providesloadsanddumpsmethods. If not provided, values will be written as-is.decode_content (
bool) – Decode response body JSON or text into a human-readable formatkwargs – Additional backend-specific keyword arguments
- bulk_delete(keys)[source]¶
Delete multiple keys from the cache, without raising errors for missing keys.
This is a naive, generic implementation that subclasses should override with a more efficient backend-specific implementation, if possible.
- clear() None. Remove all items from D.¶
- deserialize(key, value)[source]¶
Deserialize a value, if a serializer is available.
If deserialization fails (usually due to a value saved in an older requests-cache version),
Nonewill be returned.- Parameters:
value (
TypeVar(VT))
- get(k[, d]) D[k] if k in D, else d. d defaults to None.¶
- items() a set-like object providing a view on D's items¶
- keys() a set-like object providing a view on D's keys¶
- pop(k[, d]) v, remove specified key and return the corresponding value.¶
If key is not found, d is returned if given, otherwise KeyError is raised.
- popitem() (k, v), remove and return some (key, value) pair¶
as a 2-tuple; but raise KeyError if D is empty.
- serialize(value)[source]¶
Serialize a value, if a serializer is available
- Parameters:
value (
TypeVar(VT))
- setdefault(k[, d]) D.get(k,d), also set D[k]=d if k not in D¶
- update([E, ]**F) None. Update D from mapping/iterable E and F.¶
If E present and has a .keys() method, does: for k in E.keys(): D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v
- values() an object providing a view on D's values¶
- class requests_cache.backends.base.DictStorage(*args, **kwargs)[source]¶
Bases:
UserDict,BaseStorageA basic dict wrapper class for non-persistent, in-memory storage
Note
This is mostly a placeholder for when no other backends are available. For in-memory caching, either
SQLiteCache(with use_memory=True) orRedisCacheis recommended instead.- bulk_delete(keys)¶
Delete multiple keys from the cache, without raising errors for missing keys.
This is a naive, generic implementation that subclasses should override with a more efficient backend-specific implementation, if possible.
- clear() None. Remove all items from D.¶
- close()¶
Close any open backend connections
- copy()¶
- deserialize(key, value)¶
Deserialize a value, if a serializer is available.
If deserialization fails (usually due to a value saved in an older requests-cache version),
Nonewill be returned.- Parameters:
value (
TypeVar(VT))
- classmethod fromkeys(iterable, value=None)¶
- get(k[, d]) D[k] if k in D, else d. d defaults to None.¶
- items() a set-like object providing a view on D's items¶
- keys() a set-like object providing a view on D's keys¶
- pop(k[, d]) v, remove specified key and return the corresponding value.¶
If key is not found, d is returned if given, otherwise KeyError is raised.
- popitem() (k, v), remove and return some (key, value) pair¶
as a 2-tuple; but raise KeyError if D is empty.
- setdefault(k[, d]) D.get(k,d), also set D[k]=d if k not in D¶
- update([E, ]**F) None. Update D from mapping/iterable E and F.¶
If E present and has a .keys() method, does: for k in E.keys(): D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v
- values() an object providing a view on D's values¶