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.2.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

yapcache-0.1.2-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: yapcache-0.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 126ec373a7c7efec4bea65b2c7a958bef40c6a404d1e817ba3417865603aa02e
MD5 b1ac9d701a3adfe7dcc55041a68d8b10
BLAKE2b-256 deb4a76fd277f1795d7b1b875cfa21612e59e54b45e671633da796879b03b070

See more details on using hashes here.

File details

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

File metadata

  • Download URL: yapcache-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 7.8 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e7708b3d2378ebe2806d3d35bdd46f4483cb65ccb8643f341f643c9d6cafc5f0
MD5 d8ff2ee0c23ab881a405df9f22757804
BLAKE2b-256 ac3650032ffb468b3f41596da10055a038755f239af706696e50edb69d534b00

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