DynamoDB¶
DynamoDB is a NoSQL document database hosted on Amazon Web Services. In terms of features and use cases, it is roughly comparable to MongoDB and other NoSQL databases. It is an especially good fit for serverless applications running on AWS Lambda.
Warning
DynamoDB binary item sizes are limited to 400KB. If you need to cache larger responses, consider using a different backend.
Creating Tables¶
Tables will be automatically created if they don’t already exist. This is convienient if you just want to quickly test out DynamoDB as a cache backend, but in a production environment you will likely want to create the tables yourself, for example with CloudFormation or Terraform. Here are the details you’ll need:
Tables: two tables, named
responses
andredirects
Partition key (aka namespace):
namespace
Range key (aka sort key):
key
Attributes:
namespace
(string) andkey
(string)
Connection Options¶
The DynamoDB backend accepts any keyword arguments for boto3.session.Session.resource()
.
These can be passed via CachedSession
:
>>> session = CachedSession('http_cache', backend='dynamodb', region_name='us-west-2')
Or via DynamoDbCache
:
>>> backend = DynamoDbCache(region_name='us-west-2')
>>> session = CachedSession('http_cache', backend=backend)
API Reference¶
DynamoDB cache backend |
|
A dictionary-like interface for DynamoDB key-value store |
- class requests_cache.backends.dynamodb.DynamoDbCache(table_name='http_cache', connection=None, **kwargs)[source]¶
Bases:
requests_cache.backends.base.BaseCache
DynamoDB cache backend
- Parameters
table_name (
str
) – DynamoDB table namenamespace – Name of DynamoDB hash map
connection (
Optional
[ServiceResource
]) – DynamoDB Resource object to use instead of creating a new onekwargs – Additional keyword arguments for
resource()
- bulk_delete(keys)¶
Remove multiple responses and their associated redirects from the cache
- clear()¶
Delete all items from the cache
- create_key(request=None, **kwargs)¶
Create a normalized cache key from a request object
- Parameters
request (
Union
[PreparedRequest
,CachedRequest
,None
]) –- Return type
- delete(key)¶
Delete a response or redirect from the cache, as well any associated redirect history
- Parameters
key (
str
) –
- delete_url(url, method='GET', **kwargs)¶
Delete a cached response for the specified request
- delete_urls(urls, method='GET', **kwargs)¶
Delete all cached responses for the specified requests
- get_response(key, default=None)¶
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
- has_url(url, method='GET', **kwargs)¶
Returns
True
if the specified request is cached
- keys(check_expiry=False)¶
Get all cache keys for redirects and valid responses combined
- remove_expired_responses(expire_after=None)¶
Remove expired and invalid responses from the cache, optionally with revalidation
- response_count(check_expiry=False)¶
Get the number of responses in the cache, excluding invalid (unusable) responses. Can also optionally exclude expired responses.
- Return type
- save_response(response, cache_key=None, expires=None)¶
Save a response to the cache
- values(check_expiry=False)¶
Get all valid response objects from the cache
- Return type
- class requests_cache.backends.dynamodb.DynamoDbDict(table_name, namespace='http_cache', connection=None, read_capacity_units=1, write_capacity_units=1, **kwargs)[source]¶
Bases:
requests_cache.backends.base.BaseStorage
A dictionary-like interface for DynamoDB key-value store
- Notes:
The actual table name on the Dynamodb server will be
namespace:table_name
In order to deal with how DynamoDB stores data, all values are serialized.
- Parameters
table_name – DynamoDB table name
namespace – Name of DynamoDB hash map
connection – DynamoDB Resource object to use instead of creating a new one
kwargs – Additional keyword arguments for
resource()
- bulk_delete(keys)[source]¶
Delete multiple keys from the cache. Does not raise errors for missing keys.
- 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: 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 ¶