Skip to main content

region_cache

https://img.shields.io/pypi/v/region_cache.svg https://img.shields.io/travis/jheard-tw/region_cache.svg Documentation Status Updates

Region-based caching for Python/Flask with Redis

Features

Region based Flask caching with Redis.

This module provides high-level nested, region-based caching with Redis. A region is a dot-separated namespace where cache keys and values live. It is implemented as hashes in redis. Parent-child relationships are implemented as sets. Timeouts use the EXPIRE command. All work is persisted in redis, and two regions with the same name on two different processes or even different servers will share the same storage.

Invalidation of caches is “active”, not “lazy”, so caches are purged immediately upon invalidation, to solve the problem of one process knowing about a cache invalidation and the other not. Cache writes are aggressively pipelined and transactional, so if two processes write to the same key at the same time, results will not be inconsistent.

The cache is written as a Flask extension, so you can use init_app with a valid flask app to initialize it. Simply set the CACHE_REDIS_URL setting in the config.

Examples:

Using the region as a context manager treats everything in the context manager as a single transaction:

with region('abc.xyz') as r:
    x in r  # test for presence
    r[x] = 100  # get or KeyError
    x = r[x]  # set
    del r[x]  # remove

Bind to blinker signals, so the cache is purged declaratively:

region('abc.xyz').invalidate_on(
    blinker.signal('a'),
    blinker.signal('b'),
    blinker.signal('c'),
    blinker.signal('d'),
)

Nest regions. If you invalidate the parent region, all the children will also be invalidated. This is recursive, so sub-sub-sub regions will be correctly invalidated as well:

region('abc').region('xyz')  # subregion
region('abc').invalidate()  # invalidate abc AND xyz

The default serializers is “pickle”, but you can supply any serializer that exposes a loads and dumps, and individual regions can be configured differently. Children inherit the settings of their parents.

Finally, timeouts are supported, and by default the timeout refreshes itself every time you write to the cache See the region() function for more detail on how to configure it.

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

History

0.3.7 (2021-12-13)

  • Support Python 3.9+

0.1.0 (2018-05-04)

  • First release on PyPI.

Metadata

Release files for region-cache 0.3.8

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

Built distribution (wheel)

Table of built distributions (wheels) for region-cache 0.3.8
File Interpreter ABI Platform
region_cache-0.3.8-py2.py3-none-any.whl Python 2, Python 3 none any Details

Release files / region_cache-0.3.8-py2.py3-none-any.whl

Download URL region_cache-0.3.8-py2.py3-none-any.whl
Size 10.3 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
73215d0dbe3a4dffb6c764556ba50d61579133468edb99f7248e1b2f42a29dab
BLAKE2b-256 checksum
How to use checksums
05aac3c65ab58d76b07ea9043b735e6df44b99a4573e4a70c5fe519227671769
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.1

Security for region-cache 0.3.8

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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