Skip to content
Simple lru cache for asyncio
Branch: master
Clone or download
Latest commit 3a8d2bc Apr 18, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
tests Create tests for invalidade() using multiple args (#31) Jan 19, 2018
.gitignore
.pyup.yml Added pyup yml Oct 5, 2017
.travis.yml
LICENSE Fix order of copyright owners. Feb 8, 2018
MANIFEST.in Added forgotten LICENSE Apr 2, 2017
README.rst
async_lru.py Bump 1.0.2 Jan 11, 2019
requirements.txt Merge branch 'master' into pyup-scheduled-update-2019-04-15 Apr 18, 2019
setup.cfg Simplify waiting done futures. Oct 13, 2017
setup.py Change version regex to support alpha/beta versions. Feb 6, 2018
tox.ini Start using pytest-runner Oct 11, 2017

README.rst

async_lru

info:Simple lru cache for asyncio
https://travis-ci.com/aio-libs/async_lru.svg?branch=master

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.close()


loop = asyncio.get_event_loop()

loop.run_until_complete(main())

loop.close()

Python 3.3+ is required

Thanks

The library was donated by Ocean S.A.

Thanks to the company for contribution.

You can’t perform that action at this time.