No project description provided
Project description
Py-Cachify
py-cachify is a library that provides small but useful cache utilities.
Some parts were heavily inspired by douglasfarinelli's python-cachelock lib, which is sadly no longer maintained.
py-cachify works well in both sync and async environments, has 100% test coverage, is backend agnostic (you can provide your own client as long as it matches the signature), and supports Python from 3.8 and upward.
It offers cache-based locks and decorators for securing function executions and storing their results in the cache.
Table of Contents
Documentation
Detailed documentation can be found at https://py-cachify.readthedocs.io/en/latest/.
Installation
To install:
pip install py-cachify
# or if using poetry
poetry add py-cachify
Examples
To start working with it, you'll have to initialize it using init_cachify
:
from py_cachify import init_cachify
init_cachify()
By default, it will use an in-memory cache.
If you want to use Redis:
from py_cachify import init_cachify
from redis.asyncio import from_url as async_from_url
from redis import from_url
init_cachify(sync_client=from_url(redis_url), async_client=async_from_url(async_redis_client))
Normally you wouldn't have to use both sync and async clients since an application usually works in a single mode i.e. sync/async.
Once initialized you can use everything that the library provides straight up without being worried about managing the cache yourself.
If you forgot to call init_cachify
the CachifyInitError
will be raised during runtime.
from py_cachify import once
# Make sure there is just one copy of a function running at a time
@once(key='long_running_function')
async def long_running_function() -> str:
# Executing long-running operation...
pass
For more detailed documentation and examples please visit https://py-cachify.readthedocs.io/en/latest/.
Contributing
If you'd like to contribute, please first discuss the changes using Issues, and then don't hesitate to shoot a PR which will be reviewed shortly.
License
This project is licensed under the MIT License - see the LICENSE file for details.
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
Hashes for py_cachify-1.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d6f17a0a84a7afd82e2febca2cc7f355ff042c65b877239227716e7a075fb63 |
|
MD5 | 9321bb0817c0e9bc454e58d41cd49150 |
|
BLAKE2b-256 | 6927c6070b4fb367ef0b071963c678815474e89ea887b2f480c1e46dbbbda9ff |