OLD | NEW |
(Empty) | |
| 1 Metadata-Version: 1.1 |
| 2 Name: dogpile.cache |
| 3 Version: 0.6.2 |
| 4 Summary: A caching front-end based on the Dogpile lock. |
| 5 Home-page: http://bitbucket.org/zzzeek/dogpile.cache |
| 6 Author: Mike Bayer |
| 7 Author-email: mike_mp@zzzcomputing.com |
| 8 License: BSD |
| 9 Description: dogpile |
| 10 ======= |
| 11 |
| 12 Dogpile consists of two subsystems, one building on top of the other. |
| 13 |
| 14 ``dogpile`` provides the concept of a "dogpile lock", a control structur
e |
| 15 which allows a single thread of execution to be selected as the "creator
" of |
| 16 some resource, while allowing other threads of execution to refer to the
previous |
| 17 version of this resource as the creation proceeds; if there is no previo
us |
| 18 version, then those threads block until the object is available. |
| 19 |
| 20 ``dogpile.cache`` is a caching API which provides a generic interface to |
| 21 caching backends of any variety, and additionally provides API hooks whi
ch |
| 22 integrate these cache backends with the locking mechanism of ``dogpile``
. |
| 23 |
| 24 Overall, dogpile.cache is intended as a replacement to the `Beaker |
| 25 <http://beaker.groovie.org>`_ caching system, the internals of which are |
| 26 written by the same author. All the ideas of Beaker which "work" are r
e- |
| 27 implemented in dogpile.cache in a more efficient and succinct manner, an
d all |
| 28 the cruft (Beaker's internals were first written in 2005) relegated to t
he |
| 29 trash heap. |
| 30 |
| 31 Documentation |
| 32 ------------- |
| 33 |
| 34 See dogpile.cache's full documentation at |
| 35 `dogpile.cache documentation <http://dogpilecache.readthedocs.org>`_. T
he |
| 36 sections below provide a brief synopsis of the ``dogpile`` packages. |
| 37 |
| 38 Features |
| 39 -------- |
| 40 |
| 41 * A succinct API which encourages up-front configuration of pre-defined |
| 42 "regions", each one defining a set of caching characteristics includin
g |
| 43 storage backend, configuration options, and default expiration time. |
| 44 * A standard get/set/delete API as well as a function decorator API is |
| 45 provided. |
| 46 * The mechanics of key generation are fully customizable. The function |
| 47 decorator API features a pluggable "key generator" to customize how |
| 48 cache keys are made to correspond to function calls, and an optional |
| 49 "key mangler" feature provides for pluggable mangling of keys |
| 50 (such as encoding, SHA-1 hashing) as desired for each region. |
| 51 * The dogpile lock, first developed as the core engine behind the Beaker |
| 52 caching system, here vastly simplified, improved, and better tested. |
| 53 Some key performance |
| 54 issues that were intrinsic to Beaker's architecture, particularly that |
| 55 values would frequently be "double-fetched" from the cache, have been
fixed. |
| 56 * Backends implement their own version of a "distributed" lock, where th
e |
| 57 "distribution" matches the backend's storage system. For example, the |
| 58 memcached backends allow all clients to coordinate creation of values |
| 59 using memcached itself. The dbm file backend uses a lockfile |
| 60 alongside the dbm file. New backends, such as a Redis-based backend, |
| 61 can provide their own locking mechanism appropriate to the storage |
| 62 engine. |
| 63 * Writing new backends or hacking on the existing backends is intended t
o be |
| 64 routine - all that's needed are basic get/set/delete methods. A distri
buted |
| 65 lock tailored towards the backend is an optional addition, else dogpil
e uses |
| 66 a regular thread mutex. New backends can be registered with dogpile.ca
che |
| 67 directly or made available via setuptools entry points. |
| 68 * Included backends feature three memcached backends (python-memcached,
pylibmc, |
| 69 bmemcached), a Redis backend, a backend based on Python's |
| 70 anydbm, and a plain dictionary backend. |
| 71 * Space for third party plugins, including one which provides the |
| 72 dogpile.cache engine to Mako templates. |
| 73 |
| 74 |
| 75 Keywords: caching |
| 76 Platform: UNKNOWN |
| 77 Classifier: Development Status :: 5 - Production/Stable |
| 78 Classifier: Intended Audience :: Developers |
| 79 Classifier: License :: OSI Approved :: BSD License |
| 80 Classifier: Programming Language :: Python |
| 81 Classifier: Programming Language :: Python :: 3 |
OLD | NEW |