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
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 |