blob: 341e6aad0e470a077b015f206b930a8f0f3ba290 [file]
from mako import exceptions
try:
import myghtyutils.container as container
try:
import myghtyutils.ext.memcached as memcached
clsmap = {
'memory':container.MemoryContainer,
'dbm':container.DBMContainer,
'file':container.FileContainer,
'memcached':memcached.MemcachedContainer
}
except ImportError:
clsmap = {
'memory':container.MemoryContainer,
'dbm':container.DBMContainer,
'file':container.FileContainer,
}
except ImportError:
container = None
clsmap = {}
class Cache(object):
def __init__(self, id, starttime, **kwargs):
self.id = id
self.starttime = starttime
if container is not None:
self.context = container.ContainerContext()
self._containers = {}
self.kwargs = kwargs
def put(self, key, value, type='memory', **kwargs):
self._get_container(key, type, **kwargs).set_value(value)
def get(self, key, type='memory', **kwargs):
return self._get_container(key, type, **kwargs).get_value()
def _get_container(self, key, type, **kwargs):
try:
return self._containers[key]
except KeyError:
if container is None:
raise exceptions.RuntimeException("myghtyutils package is required to use cache functionality.")
kw = self.kwargs.copy()
kw.update(kwargs)
return self._containers.setdefault(key, clsmap[type](key, self.context, self.id, starttime=self.starttime, **kw))