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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
409860bd335b8ce357fe4ff5788f78c776e467984f840c04c8bad4c7e3751b5b
|
|
| MD5 |
6251aad22fbba1fcb3359dff630d7219
|
|
| BLAKE2b-256 |
31823f548440da0efe816cc927eed87183c4c318ca150b1726bfb4b04ce9da09
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7590a26a012e78baf4832cbf4309a775e2abf6107e11493d78fe1e44ab70bbf
|
|
| MD5 |
cfbdf947fb5663246a21885595b78a44
|
|
| BLAKE2b-256 |
17255ca8605d8a3a5a99cf6734ed979a343de7e4ca1469219ae48f2bc3779b9f
|