]> git.ipfire.org Git - pbs.git/blob - src/buildservice/cache.py
c05cfe91f602338187975e56702a0c24b0b1ed2d
[pbs.git] / src / buildservice / cache.py
1 #!/usr/bin/python
2
3 import logging
4 import memcache
5
6 from . import base
7
8 from .decorators import *
9
10 log = logging.getLogger("cache")
11 log.propagate = 1
12
13 class Client(memcache.Client):
14 def debuglog(self, str):
15 log.debug(str)
16
17
18 class Cache(base.Object):
19 key_prefix = "pbs_"
20
21 @property
22 def servers(self):
23 servers = self.settings.get("memcache_servers", "")
24
25 return servers.split()
26
27 @lazy_property
28 def _cache(self):
29 logging.debug("Connecting to memcache...")
30
31 return Client(self.servers, debug=1)
32
33 def get(self, key):
34 log.debug("Querying for: %s" % key)
35
36 key = "".join((self.key_prefix, key))
37
38 return self._cache.get(key)
39
40 def set(self, key, val, time=60, min_compress_len=0):
41 key = "".join((self.key_prefix, key))
42
43 return self._cache.set(key, val, time=time,
44 min_compress_len=min_compress_len)
45
46 def delete(self, key, time=0):
47 key = "".join((self.key_prefix, key))
48
49 return self._cache.delete(key, time=time)