oslo.cache/doc/source/usage.rst
Rodolfo Alonso Hernandez 6a4e6df734 Fix error in cache.configure_cache_region usage doc
The usage example of cache.configure_cache_region was missing
one input parameter, CONF.

TrivialFix

Change-Id: I43427fac6da2f4399d574ce762b40967d414fdda
2017-06-29 13:24:31 +01:00

1.4 KiB

Usage

A simple example of oslo.cache in use:

from oslo_cache import core as cache
from oslo_config import cfg

CONF = cfg.CONF

caching = cfg.BoolOpt('caching', default=True)
cache_time = cfg.IntOpt('cache_time', default=3600)
CONF.register_opts([caching, cache_time], "feature-name")

cache.configure(CONF)
example_cache_region = cache.create_region()
MEMOIZE = cache.get_memoization_decorator(
    CONF, example_cache_region, "feature-name")

# Load config file here

cache.configure_cache_region(CONF, example_cache_region)


@MEMOIZE
def f(x):
    print x
    return x

An example config file for this is:

[cache]
enabled = true
backend = dogpile.cache.memory

[feature-name]
caching = True
cache_time = 7200

There is some subtlety in the order of the calls in the example above. The requirements are: configure must be done first; create_region must be before both get_memoization_decorator and configure_cache_region (because they use the output); the config file must be fully loaded before configure_cache_region is called; all these calls must complete before a decorated function is actually invoked. In principle, there are several different orders this can happen in. In practice, the decorator will be used at import time, and the config file will be loaded later, so the above order is the only possible one.