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.

Homepage:
https://bitbucket.org/zzzeek/dogpile.cache
