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)