Skip to main content

dogpile.cache

A caching API built around the concept of a “dogpile lock”, which allows continued access to an expiring data value while a single thread generates a new value.

dogpile.cache builds on the dogpile.core locking system, which implements the idea of “allow one creator to write while others read” in the abstract. Overall, dogpile.cache is intended as a replacement to the Beaker caching system, the internals of which are written by the same author. All the ideas of Beaker which “work” are re-implemented in dogpile.cache in a more efficient and succinct manner, and all the cruft (Beaker’s internals were first written in 2005) relegated to the trash heap.

Features

  • A succinct API which encourages up-front configuration of pre-defined “regions”, each one defining a set of caching characteristics including storage backend, configuration options, and default expiration time.

  • A standard get/set/delete API as well as a function decorator API is provided.

  • The mechanics of key generation are fully customizable. The function decorator API features a pluggable “key generator” to customize how cache keys are made to correspond to function calls, and an optional “key mangler” feature provides for pluggable mangling of keys (such as encoding, SHA-1 hashing) as desired for each region.

  • The dogpile lock, first developed as the core engine behind the Beaker caching system, here vastly simplified, improved, and better tested. Some key performance issues that were intrinsic to Beaker’s architecture, particularly that values would frequently be “double-fetched” from the cache, have been fixed.

  • Backends implement their own version of a “distributed” lock, where the “distribution” matches the backend’s storage system. For example, the memcached backends allow all clients to coordinate creation of values using memcached itself. The dbm file backend uses a lockfile alongside the dbm file. New backends, such as a Redis-based backend, can provide their own locking mechanism appropriate to the storage engine.

  • Writing new backends or hacking on the existing backends is intended to be routine - all that’s needed are basic get/set/delete methods. A distributed lock tailored towards the backend is an optional addition, else dogpile uses a regular thread mutex. New backends can be registered with dogpile.cache directly or made available via setuptools entry points.

  • Included backends feature three memcached backends (python-memcached, pylibmc, bmemcached), a Redis backend, a backend based on Python’s anydbm, and a plain dictionary backend.

  • Space for third party plugins, including the first which provides the dogpile.cache engine to Mako templates.

  • Python 3 compatible in place - no 2to3 required.

Synopsis

dogpile.cache features a single public usage object known as the CacheRegion. This object then refers to a particular CacheBackend. Typical usage generates a region using make_region(), which can then be used at the module level to decorate functions, or used directly in code with a traditional get/set interface. Configuration of the backend is applied to the region using configure() or configure_from_config(), allowing deferred config-file based configuration to occur after modules have been imported:

from dogpile.cache import make_region

region = make_region().configure(
    'dogpile.cache.pylibmc',
    expiration_time = 3600,
    arguments = {
        'url':["127.0.0.1"],
        'binary':True,
        'behaviors':{"tcp_nodelay": True,"ketama":True}
    }
)

@region.cache_on_arguments()
def load_user_info(user_id):
    return some_database.lookup_user_by_id(user_id)

Documentation

See dogpile.cache’s full documentation at dogpile.cache documentation.

Metadata

Release files for dogpile.cache 0.5.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dogpile.cache 0.5.6
File Size Uploaded
dogpile.cache-0.5.6.tar.gz 189.0 kB Details

Release files / dogpile.cache-0.5.6.tar.gz

Download URL dogpile.cache-0.5.6.tar.gz
Size 189.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f80544c5555f66cf7b5fc99f15431f3b35f78009bc6b03b58fe1724236bbc57b
BLAKE2b-256 checksum
How to use checksums
c07d55967422ed24acb39e9d9b6d6288f22907136e68d728594cf8e2c16d7215
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

1.5.0

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.8

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

1 release file

1.1.0

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.9.2

1 release file

0.9.1

1 release file

0.9.0

1 release file

0.8.0

1 release file

0.7.1

1 release file

0.7.0

1 release file

0.6.8

1 release file

0.6.7

1 release file

0.6.6

1 release file

0.6.5

1 release file

0.6.4

1 release file

0.6.3

1 release file

0.6.2

1 release file

0.6.1

1 release file

0.6.0

1 release file

0.5.7

1 release file

This release

0.5.6 This release

1 release file

0.5.5

1 release file

0.5.4

1 release file

0.5.3

1 release file

0.5.2

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.4

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.1dev

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page