Caching Layer Implementation.
To use this library:
You must call configure()
.
Inside your application code, decorate the methods that you want the results
to be cached with a memoization decorator created with
get_memoization_decorator()
. This function takes a group name from the
config. Register [group] caching
and [group] cache_time
options
for the groups that your decorators use so that caching can be configured.
This library’s configuration options must be registered in your application’s
oslo_config.cfg.ConfigOpts
instance. Do this by passing the ConfigOpts
instance to configure()
.
The library has special public value for nonexistent or expired keys called
NO_VALUE
. To use this value you should import it from oslo_cache.core:
from oslo_cache import core
NO_VALUE = core.NO_VALUE
oslo_cache.core.
configure
(conf)¶Configure the library.
Register the required oslo.cache config options into an oslo.config CONF object.
This must be called before configure_cache_region()
.
Parameters: | conf (oslo_config.cfg.ConfigOpts) – The configuration object. |
---|
oslo_cache.core.
configure_cache_region
(conf, region)¶Configure a cache region.
If the cache region is already configured, this function does nothing. Otherwise, the region is configured.
Parameters: |
|
---|---|
Raises: | oslo_cache.exception.ConfigurationError – If the region parameter is not a dogpile.cache.CacheRegion. |
Returns: | The region. |
Return type: |
oslo_cache.core.
create_region
(function=<function function_key_generator>)¶Create a region.
This is just dogpile.cache.make_region, but the key generator has a different to_str mechanism.
Note
You must call configure_cache_region()
with this region before
a memoized method is called.
Parameters: | function (function) – function used to generate a unique key depending on the arguments of the decorated function |
---|---|
Returns: | The new region. |
Return type: | dogpile.cache.region.CacheRegion |
oslo_cache.core.
get_memoization_decorator
(conf, region, group, expiration_group=None)¶Build a function based on the cache_on_arguments decorator.
The memoization decorator that gets created by this function is a
dogpile.cache.region.CacheRegion.cache_on_arguments()
decorator,
where
should_cache_fn
is set to a function that returns True if both
the [cache] enabled
option is true and [group] caching
is
True.expiration_time
is set from the
[expiration_group] cache_time
option if expiration_group
is passed in and the value is set, or [group] cache_time
if
expiration_group
is not passed in and the value is set, or
[cache] expiration_time
otherwise.Example usage:
import oslo_cache.core
MEMOIZE = oslo_cache.core.get_memoization_decorator(
conf, region, group='group1')
@MEMOIZE
def function(arg1, arg2):
...
ALTERNATE_MEMOIZE = oslo_cache.core.get_memoization_decorator(
conf, region, group='group2', expiration_group='group3')
@ALTERNATE_MEMOIZE
def function2(arg1, arg2):
...
Parameters: |
|
---|---|
Return type: | function reference |
oslo_cache.core.
NO_VALUE
= <dogpile.cache.api.NoValue object>¶Value returned for nonexistent or expired keys.
oslo_cache.exception.
ConfigurationError
¶Bases: exceptions.Exception
Raised when the cache isn’t configured correctly.
oslo_cache.exception.
QueueEmpty
¶Bases: exceptions.Exception
Raised when a connection cannot be acquired.
Items useful for external testing.
oslo_cache.testing.
CacheIsolatingProxy
(*args, **kwargs)¶Bases: dogpile.cache.proxy.ProxyBackend
Proxy that forces a memory copy of stored values.
The default in-memory cache-region does not perform a copy on values it is meant to cache. Therefore if the value is modified after set or after get, the cached value also is modified. This proxy does a copy as the last thing before storing data.
In your application’s tests, you’ll want to set this as a proxy for the in-memory cache, like this:
self.config_fixture.config(
group='cache',
backend='dogpile.cache.memory',
enabled=True,
proxies=['oslo_cache.testing.CacheIsolatingProxy'])
get
(key)¶set
(key, value)¶oslo_cache.
configure
(conf)¶Configure the library.
Register the required oslo.cache config options into an oslo.config CONF object.
This must be called before configure_cache_region()
.
Parameters: | conf (oslo_config.cfg.ConfigOpts) – The configuration object. |
---|
oslo_cache.
configure_cache_region
(conf, region)¶Configure a cache region.
If the cache region is already configured, this function does nothing. Otherwise, the region is configured.
Parameters: |
|
---|---|
Raises: | oslo_cache.exception.ConfigurationError – If the region parameter is not a dogpile.cache.CacheRegion. |
Returns: | The region. |
Return type: |
oslo_cache.
create_region
(function=<function function_key_generator>)¶Create a region.
This is just dogpile.cache.make_region, but the key generator has a different to_str mechanism.
Note
You must call configure_cache_region()
with this region before
a memoized method is called.
Parameters: | function (function) – function used to generate a unique key depending on the arguments of the decorated function |
---|---|
Returns: | The new region. |
Return type: | dogpile.cache.region.CacheRegion |
oslo_cache.
get_memoization_decorator
(conf, region, group, expiration_group=None)¶Build a function based on the cache_on_arguments decorator.
The memoization decorator that gets created by this function is a
dogpile.cache.region.CacheRegion.cache_on_arguments()
decorator,
where
should_cache_fn
is set to a function that returns True if both
the [cache] enabled
option is true and [group] caching
is
True.expiration_time
is set from the
[expiration_group] cache_time
option if expiration_group
is passed in and the value is set, or [group] cache_time
if
expiration_group
is not passed in and the value is set, or
[cache] expiration_time
otherwise.Example usage:
import oslo_cache.core
MEMOIZE = oslo_cache.core.get_memoization_decorator(
conf, region, group='group1')
@MEMOIZE
def function(arg1, arg2):
...
ALTERNATE_MEMOIZE = oslo_cache.core.get_memoization_decorator(
conf, region, group='group2', expiration_group='group3')
@ALTERNATE_MEMOIZE
def function2(arg1, arg2):
...
Parameters: |
|
---|---|
Return type: | function reference |
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.