24 lines
861 B
Python
24 lines
861 B
Python
|
from data.cache.impl import NoopDataModelCache, InMemoryDataModelCache, MemcachedModelCache
|
||
|
|
||
|
def get_model_cache(config):
|
||
|
""" Returns a data model cache matching the given configuration. """
|
||
|
cache_config = config.get('DATA_MODEL_CACHE_CONFIG', {})
|
||
|
engine = cache_config.get('engine', 'noop')
|
||
|
|
||
|
if engine == 'noop':
|
||
|
return NoopDataModelCache()
|
||
|
|
||
|
if engine == 'inmemory':
|
||
|
return InMemoryDataModelCache()
|
||
|
|
||
|
if engine == 'memcached':
|
||
|
endpoint = cache_config.get('endpoint', None)
|
||
|
if endpoint is None:
|
||
|
raise Exception('Missing `endpoint` for memcached model cache configuration')
|
||
|
|
||
|
timeout = cache_config.get('timeout')
|
||
|
connect_timeout = cache_config.get('connect_timeout')
|
||
|
return MemcachedModelCache(endpoint, timeout=timeout, connect_timeout=connect_timeout)
|
||
|
|
||
|
raise Exception('Unknown model cache engine `%s`' % engine)
|