Advanced caching in python
Project description
thornfield: Advanced caching in python
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
Release history Release notifications | RSS feed
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b371f2a7c292819b2214d5d352ab151566a35355ce03d790b99f61b1e73cdb5
|
|
| MD5 |
56ffae4dd4adfa2485d160a4f30c2b1d
|
|
| BLAKE2b-256 |
72389b53909dd05a4406eb933b7d8fda81b15cb066d661b8587067293bcebb26
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69cf086cfda1d3a9a9432e19f0a66f7108445f64e61a177f4eefa1ffd6f3c1f3
|
|
| MD5 |
f28d160d6d3414a5d009c94c7c516140
|
|
| BLAKE2b-256 |
66ddccf9f97bfc7baee16226b76c7038e3a068c82958e762d217706d638f4f7a
|