Skip to main content

Dogpile consists of two subsystems, one building on top of the other.

dogpile provides the concept of a “dogpile lock”, a control structure which allows a single thread of execution to be selected as the “creator” of some resource, while allowing other threads of execution to refer to the previous version of this resource as the creation proceeds; if there is no previous version, then those threads block until the object is available.

dogpile.cache is a caching API which provides a generic interface to caching backends of any variety, and additionally provides API hooks which integrate these cache backends with the locking mechanism of dogpile.

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.

Documentation

See dogpile.cache’s full documentation at dogpile.cache documentation. The sections below provide a brief synopsis of the dogpile packages.

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 one which provides the dogpile.cache engine to Mako templates.

The SQLAlchemy Project

Dogpile is part of the SQLAlchemy Project and adheres to the same standards and conventions as the core project.

Development / Bug reporting / Pull requests

Please refer to the SQLAlchemy Community Guide for guidelines on coding and participating in this project.

Code of Conduct

Above all, SQLAlchemy places great emphasis on polite, thoughtful, and constructive communication between users and developers. Please see our current Code of Conduct at Code of Conduct.

License

Dogpile is distributed under the MIT license.

Metadata

Release files for dogpile.cache 1.4.0

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 1.4.0
File Size Uploaded
dogpile_cache-1.4.0.tar.gz 937.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dogpile.cache 1.4.0
File Interpreter ABI Platform
dogpile_cache-1.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.0 MB

Release files / dogpile_cache-1.4.0.tar.gz

Download URL dogpile_cache-1.4.0.tar.gz
Size 937.5 kB
Tags Source
SHA-256 checksum
How to use checksums
b00a9e2f409cf9bf48c2e7a3e3e68dac5fa75913acbf1a62f827c812d35f3d09
BLAKE2b-256 checksum
How to use checksums
e8072257f13f9cd77e71f62076d220b7b59e1f11a70b90eb1e3ef8bdf0f14b34
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / dogpile_cache-1.4.0-py3-none-any.whl

Download URL dogpile_cache-1.4.0-py3-none-any.whl
Size 62.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f1581953afefd5f55743178694bf3b3ffb2782bba3d9537566a09db6daa48a63
BLAKE2b-256 checksum
How to use checksums
fb916191ee1b821a03ed2487f234b11c58b0390c305452cf31e1e33b4a53064d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release history Release notifications | RSS feed

1.5.0

2 release files

1.4.1

2 release files

This release

1.4.0 This release

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

0.5.6

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