Skip to main content
info:

Simple lru cache for asyncio

https://travis-ci.com/aio-libs/async_lru.svg?branch=master https://img.shields.io/pypi/v/async_lru.svg https://codecov.io/gh/aio-libs/async_lru/branch/master/graph/badge.svg

Installation

pip install async_lru

Usage

This package is 100% port of Python built-in function functools.lru_cache for asyncio

import asyncio

import aiohttp
from async_lru import alru_cache


@alru_cache(maxsize=32)
async def get_pep(num):
    resource = 'http://www.python.org/dev/peps/pep-%04d/' % num
    async with aiohttp.ClientSession() as session:
        try:
            async with session.get(resource) as s:
                return await s.read()
        except aiohttp.ClientError:
            return 'Not Found'


async def main():
    for n in 8, 290, 308, 320, 8, 218, 320, 279, 289, 320, 9991:
        pep = await get_pep(n)
        print(n, len(pep))

    print(get_pep.cache_info())
    # CacheInfo(hits=3, misses=8, maxsize=32, currsize=8)

    # closing is optional, but highly recommended
    await get_pep.cache_close()


asyncio.run(main())

TTL (time-to-live, expiration on timeout) is supported by accepting ttl configuration parameter (off by default):

@alru_cache(ttl=5)
async def func(arg):
    return arg * 2

The library supports explicit invalidation for specific function call by cache_invalidate():

@alru_cache(ttl=5)
async def func(arg1, arg2):
    return arg * 2

func.cache_invalidate(1, arg2=2)

The method returns True if corresponding arguments set was cached already, False otherwise.

Python 3.8+ is required

Thanks

The library was donated by Ocean S.A.

Thanks to the company for contribution.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

async-lru-2.0.1.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

async_lru-2.0.1-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file async-lru-2.0.1.tar.gz.

File metadata

  • Download URL: async-lru-2.0.1.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.16

File hashes

Hashes for async-lru-2.0.1.tar.gz
Algorithm Hash digest
SHA256 2bba4fe007a7da40a8da0388a370e2beae2f602edef12b2e705ae4c781d0fc31
MD5 0df230ce9172eb3f222f557fccab0971
BLAKE2b-256 2497c09f5d3f29552e20d64e672a6d29be691b3788090c2a3e7d51b625c68318

See more details on using hashes here.

File details

Details for the file async_lru-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: async_lru-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 5.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.16

File hashes

Hashes for async_lru-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4abb67e22d36fa92205602798fdface58e396c1555c2ab57e29b35725b016d2f
MD5 19db4f5e60984bb52016adf05fa63c94
BLAKE2b-256 0b3350e8d5fe5bb5ba8ab1b2c4ee8cec961ff7a81723afb2a49d6d1bf6012cc5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page