Skip to main content

Memoize asyncio Python calls with a per-result TTL

Project description

aiomemoizettl CircleCI Test Coverage

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


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 hashes)

Uploaded Source

Built Distribution

aiomemoizettl-0.0.3-py3-none-any.whl (3.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page