Skip to main content

An asyncio Cache

Project description

info:

A caching solution for asyncio

https://travis-ci.org/iamsinghrajat/async-cache.svg?branch=master https://img.shields.io/pypi/v/async-cache.svg https://www.codetriage.com/iamsinghrajat/async-cache/badges/users.svg

Installation

pip install async-cache

Basic Usage

# LRU Cache
from cache import AsyncLRU

@AsyncLRU(maxsize=128)
async def func(*args, **kwargs):
    """
    maxsize : max number of results that are cached.
              if  max limit  is reached the oldest result  is deleted.
    """
    pass


# TTL Cache
from cache import AsyncTTL

@AsyncTTL(time_to_live=60, maxsize=1024)
async def func(*args, **kwargs):
    """
    time_to_live : max time for which a cached result  is valid
    maxsize : max number of results that are cached.
              if  max limit  is reached the oldest result  is deleted.
    """
    pass

# Supports primitive as well as non-primitive function parameter.
# Currently TTL & LRU cache is supported.

Advanced Usage

class CustomDataClass:
    id: int
    value: int


from cache import AsyncLRU

@AsyncLRU(maxsize=128)
async def func(model: "CustomDataClass"):
    ...
    # function logic
    ...

# async-cache will work even if function parameters are:
#   1. orm objects
#   2. request object
#   3. any other custom object type.

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

async-cache-1.1.1.tar.gz (3.8 kB view hashes)

Uploaded Source

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