Skip to main content

No project description provided

Project description

yapcache

PyPI - Version PyPI - Python Version

Yet another Python cache library.

Table of Contents

Installation

pip install yapcache

Usage

In memory cache:

import asyncio
from yapcache import memoize
from yapcache.caches.memory import InMemoryCache

cache = InMemoryCache(maxsize=1_000, key_prefix=f"example:")


@memoize(cache, ttl=60, cache_key=lambda n: f"slow-{n}")
async def slow_fn(n: int):
    await asyncio.sleep(n)


async def example():
    await slow_fn(3)
    await slow_fn(3)  # cached!


asyncio.run(example())

Redis cache:

# ...
from redis.asyncio.client import Redis
from yapcache.caches.redis import RedisCache


redis_client = Redis()
cache = RedisCache(redis_client, key_prefix=f"example:")

Multi-layer cache:

# ...
from yapcache.caches import MultiLayerCache

redis_client = Redis()

cache = MultiLayerCache(
    [InMemoryCache(maxsize=2_000), RedisCache(redis_client)],
    key_prefix=f"example:",
)

Use lock parameter to protect against thundering herd (only one coroutine/thread will do the work and update the cache):

# ...
from yapcache.distlock import RedisDistLock

@memoize(
    cache,
    ttl=60,
    cache_key=lambda n: f"slow-{n}",
    lock=lambda key: RedisDistLock(redis_client, key),
)
async def slow_fn(n: int):
    # ...

Use best_before to serve stale data (update the cache in background):

@memoize(
    cache,
    ttl=60,
    cache_key=lambda n: f"slow-{n}",
    best_before=lambda n: time.time() + 30
)
async def slow_fn(n: int):
    # ...

License

yapcache is distributed under the terms of the MIT license.

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

yapcache-0.1.6.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

yapcache-0.1.6-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file yapcache-0.1.6.tar.gz.

File metadata

  • Download URL: yapcache-0.1.6.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for yapcache-0.1.6.tar.gz
Algorithm Hash digest
SHA256 9a253468a5f9b299cd9be2879ace3c0dfdac993879bd30bb5cb5ef34433b9060
MD5 75319189ef7de9d0857edaa794b543d4
BLAKE2b-256 147c6b144e98877ca9d4290e40291f64dc18ca76bbefb183bed321ac9dd7ed05

See more details on using hashes here.

File details

Details for the file yapcache-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: yapcache-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for yapcache-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 cf2f253c3f811541d592bb3360d3ed266cd4457537ca649ce3f0724e667ce7d6
MD5 776bc2425a2a1152eebf23398bdd8f78
BLAKE2b-256 9fc3b6928ff5f0d5510fdeaedd53647ecd1635ddadb0e1c014057e3ea0be26d6

See more details on using hashes here.

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