Skip to main content

Advanced caching in python

Project description

thornfield: Advanced caching in python

Build Status codecov License: MIT Code style: black

Installation

pip install thornfield

Usage

Choose the cache storage you want to use - in-memory, redis and postgresql are currently implemented. You can use a different storage by implementing the Cache interface.

Then, use the cached decorator to annotate the function being cached:

cacher = Cacher(cache_factory_func)

@cacher.cached
def foo():
    ...

The decorator supports:

  • Setting an expiration time for the cached values.
  • Caching only values that match a constraint (e.g. not None).
  • Using only some of the function parameters as keys for the cache.
  • Caching async functions.

Caching only some parameters

In case you don't want to use all the parameters of the function as cache key, you can the Cached or NotCached types:

from thornfield.typing import Cached, NotCached

@cached
def request(url: str, token: str, timeout: NotCached[int]):
    ...


@cached
async def request_async(url: Cached[str], timeout: int, callback):
    ...

Caching abstract methods

In order to avoid adding the same decorator to all implementations of an abstract method, you can use cache_method as follows:

class Base(ABC):
    def __init__(self):
        cacher.cache_method(do_something)

    @abstractmethod
    def do_something(self):
        pass

Cache Factories

In the cache_factories package you can find cache factories for Redis and PostgreSQL. They both cache each function to a different table (in PostgreSQL, db in Redis).

Their create method can be passed as cache_impl to the constructor of Cacher.

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

thornfield-1.5.1.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

thornfield-1.5.1-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file thornfield-1.5.1.tar.gz.

File metadata

  • Download URL: thornfield-1.5.1.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.9.0

File hashes

Hashes for thornfield-1.5.1.tar.gz
Algorithm Hash digest
SHA256 4b371f2a7c292819b2214d5d352ab151566a35355ce03d790b99f61b1e73cdb5
MD5 56ffae4dd4adfa2485d160a4f30c2b1d
BLAKE2b-256 72389b53909dd05a4406eb933b7d8fda81b15cb066d661b8587067293bcebb26

See more details on using hashes here.

File details

Details for the file thornfield-1.5.1-py3-none-any.whl.

File metadata

  • Download URL: thornfield-1.5.1-py3-none-any.whl
  • Upload date:
  • Size: 14.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.9.0

File hashes

Hashes for thornfield-1.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 69cf086cfda1d3a9a9432e19f0a66f7108445f64e61a177f4eefa1ffd6f3c1f3
MD5 f28d160d6d3414a5d009c94c7c516140
BLAKE2b-256 66ddccf9f97bfc7baee16226b76c7038e3a068c82958e762d217706d638f4f7a

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