Lazy cache updates for Django
Project description
django-update-cache
Lazy cache updates for Django.
Rationale
Cache function results with optional asynchronous updates.
Support
Supports: Python 3.10.
Supports Django Versions: 4.2.7
Installation
$ pip install django-update-cache
Usage
Add update_cache.apps.UpdateCacheConfig
to INSTALLED_APPS
.
Run migrations:
python manage.py migrate
Add a module cached_functions
to one or more of your apps. Decorate any function for which you want the results to be
cached:
# cached_functions.py
from update_cache.decorators import cache_function
@cache_function()
def my_expensive_function():
...
Specify a specific timeout:
# cached_functions.py
from update_cache.decorators import cache_function
@cache_function(timeout=60)
def my_expensive_function():
...
Use asynchronous updating (this requires running a django_rq worker):
# cached_functions.py
from update_cache.brokers import async_broker
from update_cache.decorators import cache_function
@cache_function(broker=async_broker)
def my_expensive_function():
...
Use a custom cache backend:
# cached_functions.py
from update_cache.decorators import cache_function
@cache_function(backend='my_cache_alias')
def my_expensive_function():
...
You can set a global broker to delegate the cache updates in settings.py
.
DUC_DEFAULT_BROKER = 'update_cache.brokers.AsyncBroker'
Invalidate the cache:
# cached_functions.py
from update_cache.decorators import cache_function
@cache_function()
def my_expensive_function():
...
my_expensive_function.cache.invalidate()
Cache a view (only synchronous updates).
# cached_functions.py
from update_cache.decorators import cache_view
@cache_view()
def my_expensive_view():
...
View all cached entries in Django Admin:
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
Built Distribution
Hashes for django-update-cache-1.0.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e5a8974250d05b8a5eac7c80aab8fdc7f42a42925e8bc478a278f4bfa5183a9 |
|
MD5 | daef52416aae3a77479f5030b0d48f87 |
|
BLAKE2b-256 | a5ff13ec399e7232e806daf528c9e61dc5919e54272aaaf1521373b9a8bf2c21 |
Hashes for django_update_cache-1.0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c0c1c7c9cbb1b343ae6ef02ed3f83891a1111e12d485a18d497705c0abd5b920 |
|
MD5 | 69bf2b703c2aa692b5b7cfb0b5d963a6 |
|
BLAKE2b-256 | a3c34e11f78216459cdf931340dbec36f72ebb64af504b70db14a5e050d91170 |