1
from mako import exceptions
4
import beaker.container as container
5
import beaker.exceptions
7
'memory':container.MemoryContainer,
8
'dbm':container.DBMContainer,
9
'file':container.FileContainer,
12
import beaker.ext.memcached as memcached
13
# XXX HACK: Python 2.3 under some circumstances will import this module
14
# even though there's no memcached. This ensures its really
15
# there before adding it.
16
if hasattr(memcached, 'MemcachedContainer'):
17
clsmap['memcached'] = memcached.MemcachedContainer
18
except beaker.exceptions.BeakerException:
25
def __init__(self, id, starttime, **kwargs):
27
self.starttime = starttime
28
if container is not None:
29
self.context = container.ContainerContext()
32
def put(self, key, value, type='memory', **kwargs):
33
self._get_container(key, type, **kwargs).set_value(value)
34
def get(self, key, type='memory', **kwargs):
35
return self._get_container(key, type, **kwargs).get_value()
36
def _get_container(self, key, type, **kwargs):
38
return self._containers[key]
41
raise exceptions.RuntimeException("the Beaker package is required to use cache functionality.")
42
kw = self.kwargs.copy()
44
return self._containers.setdefault(key, clsmap[type](key, self.context, self.id, starttime=self.starttime, **kw))