Skip to main content

Async cache

Project description

acache: async cache

A implementation of lru_cache and ttl_cache for asyncio.

Install

# from pip
pip3 install --user python-acache

# from github
pip3 install git+https://github.com/Dimfred/acache.git

Alternatives

async-cache

The difference in my package is that if you call a function with the same args, from different threads the second one will not return a value until the first one is completed, s.t. the value gets definitely cached. Additionally, I allow overwriting the key generation function, so you can pick your own. Also my naming is different, and maybe more pythonic (whatever).

Usage

from acache import alru_cache, attl_cache

# basic lru
@alru_cache(maxsize=2)
async def i_am_cached(foo):
    return foo

# use with custom key function
@alru_cache(maxsize=2, make_key=lambda x: type(x))
async def i_cache_based_on_the_input_type(foo)
    return foo

class A:
    pass

res1 = await i_cache_based_on_the_input_type(A())
res2 = await i_cache_based_on_the_input_type(A())
assert id(res1) == id(res2) # TRUE

# time cache
@attl_cache(seconds=1)
async def cached_for_1_s(bar):
    return bar


res1 = await cached_for_1_s(1)
res2 = await cached_for_1_s(2)

assert res1 == res2

# wait 1 second

res3 = await cached_for_1_s(3)
assert res1 != res3

# key function also applies to the attl_cache

Synopsis

def alru_cache(maxsize: int = 128, make_key=None):
    ...

def attl_cache(
    weeks=0,
    days=0,
    hours=0,
    minutes=0,
    seconds=0,
    milliseconds=0,
    microseconds=0,
    maxsize=128,
    make_key=None,
):
    ...

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

python-acache-0.1.4.tar.gz (3.1 kB view details)

Uploaded Source

Built Distribution

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

python_acache-0.1.4-py3-none-any.whl (3.7 kB view details)

Uploaded Python 3

File details

Details for the file python-acache-0.1.4.tar.gz.

File metadata

  • Download URL: python-acache-0.1.4.tar.gz
  • Upload date:
  • Size: 3.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.10.7 Linux/5.19.8-arch1-1

File hashes

Hashes for python-acache-0.1.4.tar.gz
Algorithm Hash digest
SHA256 409860bd335b8ce357fe4ff5788f78c776e467984f840c04c8bad4c7e3751b5b
MD5 6251aad22fbba1fcb3359dff630d7219
BLAKE2b-256 31823f548440da0efe816cc927eed87183c4c318ca150b1726bfb4b04ce9da09

See more details on using hashes here.

File details

Details for the file python_acache-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: python_acache-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 3.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.10.7 Linux/5.19.8-arch1-1

File hashes

Hashes for python_acache-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 c7590a26a012e78baf4832cbf4309a775e2abf6107e11493d78fe1e44ab70bbf
MD5 cfbdf947fb5663246a21885595b78a44
BLAKE2b-256 17255ca8605d8a3a5a99cf6734ed979a343de7e4ca1469219ae48f2bc3779b9f

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 Pingdom Monitoring Sentry Error logging StatusPage Status page