Memoized Lambda
MemoizedLambda is a class that provides an async invoke interface with deduplication of requests and memoization of responses for a Boto3 Lambda Client.
Usage
First, create a cache for the memoization:
from cachetools import TTLCache
cache = TTLCache(ttl=60, maxsize=1024)
The cache can be any object that implements collections.abc.MutableMapping.
Then, create a lambda client and a memoized lambda for some AWS Lambda function:
import boto3
from memoized_lambda import MemoizedLambda
client = boto3.client("lambda")
mlambda = MemoizedLambda(lambda_client=client, function_name="function", cache=cache)
Finally, invoke the lambda function:
import asyncio
loop = asyncio.get_event_loop()
coro = asyncio.gather(mlambda.invoke({}), mlambda.invoke([]), mlambda.invoke({}))
loop.run_until_complete(coro)
invoke returns the response payload, or raises a MemoizedLambdaError
exception on error. The first invocation with a given input will invoke the
lambda, while subsequent invocations for the same input will read the response
payload from the cache. In the above example, the lambda is invoked once for
{} and once for [].
The request and response payloads are transformed using configurable transform
functions that default to JSON serialization and deserialization. If you want to
override them, use the optional request_transform and response_transform
arguments:
mlambda = MemoizedLambda(
lambda_client=client,
function_name="function",
cache=cache,
request_transform=lambda x: x,
response_transform=lambda x, y: y)
The response_transform function gets the request and response payload as
arguments.
If you want to avoid caching some responses, use the optional cache_filter
argument:
mlambda = MemoizedLambda(
lambda_client=client,
function_name="function",
cache=cache,
cache_filter=lambda x: not isinstance(x, Exception))
Note that MemoizedLambdaError exceptions are never cached, even if raised by
the response transform.
Metadata
Release files for memoized-lambda 0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| memoized-lambda-0.1.tar.gz | 8.4 kB | Without provenance | Details for memoized-lambda-0.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| memoized_lambda-0.1-py3-none-any.whl | Python 3 | none | any | Details for memoized_lambda-0.1-py3-none-any.whl |
Total release size: 16.3 kB
Release files / memoized-lambda-0.1.tar.gz
| Download URL | memoized-lambda-0.1.tar.gz |
|---|---|
| Size | 8.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
83479e10b6795a0479f4a3fa8c3b0dc46bff4430ca048f84d13055cdb395e5e4
|
|
BLAKE2b-256 checksum How to use checksums |
d87358f2a9e69ce902e30c30c1ddc1c7c04f2731238ddec810751712bdb251c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.2
|
Release files / memoized_lambda-0.1-py3-none-any.whl
| Download URL | memoized_lambda-0.1-py3-none-any.whl |
|---|---|
| Size | 7.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8c2afa4c0d57167b2cc3bf4d0ffd9caaa5409048973676d245ab376a4438b6b8
|
|
BLAKE2b-256 checksum How to use checksums |
976803faf538a7210986a66e54c9edd50eabbbbc63ffe58beb7b39c24fde1d5e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.2
|
Security for memoized-lambda 0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.