django-dumbwaiter icondjango-dumbwaiter 0.1

Asynchronous function execution with cached results
Optimizing expensive queries and calculations in web applications is a complex and tedious problem. django-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.

last updated on:
August 23rd, 2010, 13:23 GMT
price:
FREE!
developed by:
Ben Slavin
license type:
BSD License 
category:
ROOT \ Internet \ HTTP (WWW)

FREE!

In a hurry? Add it to your Download Basket!

user rating

UNRATED
0.0/5
 

0/5

Add your review!

SUBMIT