-
Notifications
You must be signed in to change notification settings - Fork 0
Asynchronous function execution with cached results
License
benslavin/django-dumbwaiter
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
=================
Django Dumbwaiter
=================
Optimizing expensive queries and calculations in web applications is a complex
and tedious problem. Dumbwaiter is designed to enable simple caching of data
while relieving the dogpile effect.
Numerous functions can be run in the background on a periodic basis, and will
persist the results of their evaluation to the database.
How to use dumbwaiter
=====================
The easiest way to get started with dumbwaiter is to add `dumbwaiter` to the
INSTALLED_APPS list in your `settings.py` and to add a setting called
`DUMBWAITER_FUNCTION_LIST` that conforms to the following standard:
::
DUMBWAITER_FUNCTION_LIST = [
{
'function': 'time.time',
'name': 'time',
'frequency': 5,
},
{
'function': 'my_app.utils.function_name',
'name': 'count',
'frequency': 15,
},
]
Each member of the function list can contain the following attributes:
function:
An actual function or a string containing the path by which a function
can be accessed.
name:
The name by which the function will be referenced. This name must be unique.
frequency:
The number of seconds between invocations of `function`. Defaults to
`DUMBWAITER_DEFAULT_FREQUENCY`.
args:
The arguments to be passed to `function`. Defaults to an empty list.
kwargs:
The keyword arguments to be passed to `function`. Defaults to an empty dict.
max_saved:
The depth of the history of cached data. This data is not accessible through
the standard API, and currently only applied when using the database storage
backend. Defaults to `DUMBWAITER_DEFAULT_SAVED`.
After the function list has been established the `run_dumbwaiter` management
command will run the specified functions at the specified intervals.
::
./manage.py run_dumbwaiter
Once the run_dumbwaiter management command is started, it will begin to record
the values for each function. It is possible to retrieve the most recent value
through the use of `get_value`:
::
import dumbwaiter
my_value = dumbwaiter.get_value("count")
Additional settings
===================
There are several additional settings that may be customized.
DUMBWAITER_SERIALIZER:
The name of a module containing the serializer to be used to store the
value returned by functions in the function list. The serializer must be
named `serializer` in the module specified. It must additionally support
the `serialize` and `deserialize` methods. The default serializer lives
in `dumbwaiter.serializers.pickler`.
DUMBWAITER_THREADED:
The Dumbwaiter can run in threaded and non-threaded modes. The primary
advantage of threaded operation is that functions do not block one another.
The default is True.
DUMBWAITER_DEFAULT_SAVED:
The default depth of the history of cached data. Defaults to 10.
DUMBWAITER_DEFAULT_FREQUENCY:
The default number of seconds between invocation of functions.
Defaults to five minutes.
PICKLE_PROTOCOL:
If using the `dumbwaiter.serializers.pickler` serializer, this specifies
the version of the pickle protocol that will be used.
About
Asynchronous function execution with cached results
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published