Memoize asyncio Python calls with a per-result TTL
Project description
aiomemoizettl
Memoize asyncio Python calls with a per-result TTL
Installation
pip install aiomemoizettl
Usage
For a coroutine whose arguments are hashable, you can create a memoized version by passing it to memoize_ttl
, along with a function that converts its return value to a TTL.
For example, the below
import asyncio
from aiomemoizettl import memoize_ttl
async def main():
memoized = memoize_ttl(coro, get_ttl=lambda result: result['ttl'])
results = await asyncio.gather(*[
memoized(1),
memoized(2),
])
await asyncio.sleep(1)
results = await asyncio.gather(*[
memoized(1),
memoized(2), # Will used the cached value of `coro(2)`
])
async def coro(value):
print('Inside coro', value)
return {'ttl': value, 'some-other': 'data'}
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()
will output
Inside coro 1
Inside coro 2
Inside coro 1
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aiomemoizettl-0.0.3.tar.gz
(2.1 kB
view details)
Built Distribution
File details
Details for the file aiomemoizettl-0.0.3.tar.gz
.
File metadata
- Download URL: aiomemoizettl-0.0.3.tar.gz
- Upload date:
- Size: 2.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a80d2dc765e545263f515363b6700ec8cf86fa3968b529f56390b28e34f743d |
|
MD5 | 13dd1cfee6bcaeb52b57ffdc4d646a17 |
|
BLAKE2b-256 | 3f6de57e96f11ee334ec746b4d7a96351b35f6b42e53855c2a7c255d16be62e3 |
File details
Details for the file aiomemoizettl-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: aiomemoizettl-0.0.3-py3-none-any.whl
- Upload date:
- Size: 3.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07a6becac60f6cd2604b9f2b73bcd9a50079a0b7b55e2a4e45b1eec5a3ea9659 |
|
MD5 | 4da3da0cc6b28a5e27569758367f0b57 |
|
BLAKE2b-256 | 364959ad30138158b09ee058c72d053461c15dcc3f43fe26f53fed98aab3c32e |