DynamoDb Backend¶
- class cachelib.dynamodb.DynamoDbCache(table_name='python-cache', default_timeout=300, key_field='cache_key', expiration_time_field='expiration_time', key_prefix=None, ignore_delete_many_errors=True, check_connection=False, **kwargs)¶
Bases:
BaseCacheImplementation of
BaseCachethat uses an AWS DynamoDb table as the backend.Your server process will require
dynamodb:GetItemanddynamodb:PutItemIAM permissions on the cache table.Limitations: DynamoDB table items are limited to 400 KB in size. Since this class stores cached items in a table, the max size of a cache entry will be slightly less than 400 KB, since the cache key and expiration time fields are also part of the item.
- Parameters:
table_name (str) – The name of the DynamoDB table to use
default_timeout (int | timedelta) –
Set the timeout after which cache entries expire, either a number of seconds or a
datetime.timedeltaChanged in version 0.17.0: Accepts a
datetime.timedelta.key_field (str) – The name of the hash_key attribute in the DynamoDb table. This must be a string attribute.
expiration_time_field (str) – The name of the table attribute to store the expiration time in. This will be an int attribute. The timestamp will be stored as seconds past the epoch. If you configure this as the TTL field, then DynamoDB will automatically delete expired entries.
key_prefix (str | None) – A prefix that should be added to all keys.
ignore_delete_many_errors (bool) –
If False, delete_many() will raise a RuntimeError if any key fails to delete. Keys that do not exist are considered successfully deleted and do not raise.
Changelog
Added in version 0.16.0.
check_connection (bool) –
If True, the constructor will verify the connection to DynamoDB and raise a RuntimeError if it fails. If False (default), connection errors are ignored at construction and surface on first use. A missing table is created either way.
Changelog
Added in version 0.16.1.
kwargs (Any)
- serializer = <cachelib.serializers.DynamoDbSerializer object>¶
- get(key)¶
Get a cache item
- delete(key)¶
Deletes an item from the cache. This is a no-op if the item doesn’t exist
- set(key, value, timeout=None)¶
Add a new key/value to the cache (overwrites value, if key already exists in the cache).
- Parameters:
key (str) – the key to set
value (Any) – the value for the key
timeout (int | timedelta | None) – the cache timeout for the key, either a number of seconds or a
datetime.timedelta(if not specified, it uses the default timeout). A timeout of 0 indicates that the cache never expires.
- Returns:
Trueif key has been updated,Falsefor backend errors. Pickling errors, however, will raise a subclass ofpickle.PickleError.- Return type:
- add(key, value, timeout=None)¶
Works like
set()but does not overwrite the values of already existing keys.- Parameters:
key (str) – the key to set
value (Any) – the value for the key
timeout (int | timedelta | None) – the cache timeout for the key, either a number of seconds or a
datetime.timedelta(if not specified, it uses the default timeout). A timeout of 0 indicates that the cache never expires.
- Returns:
Same as
set(), but alsoFalsefor already existing keys.- Return type:
- has(key)¶
Checks if a key exists in the cache without returning it. This is a cheap operation that bypasses loading the actual data on the backend.