]> git.ipfire.org Git - people/jschlag/pbs.git/blob - backend/cache.py
Drop dependency on textile
[people/jschlag/pbs.git] / backend / cache.py
1 #!/usr/bin/python
2
3 import logging
4 import memcache
5
6 import base
7
8 class Client(memcache.Client):
9 def debuglog(self, str):
10 logging.debug("MemCached: %s" % str)
11
12
13 class Cache(base.Object):
14 key_prefix = "pbs_"
15
16 def __init__(self, pakfire):
17 base.Object.__init__(self, pakfire)
18
19 logging.info("Initializing memcache...")
20
21 # Fetching servers from the database configuration.
22 servers = self.settings.get("memcache_servers", "")
23 self.servers = servers.split()
24
25 logging.info(" Using servers: %s" % ", ".join(self.servers))
26
27 self._memcache = Client(self.servers, debug=1)
28
29 def get(self, key):
30 logging.debug("Querying memcache for: %s" % key)
31
32 key = "".join((self.key_prefix, key))
33
34 return self._memcache.get(key)
35
36 def set(self, key, val, time=60, min_compress_len=0):
37 key = "".join((self.key_prefix, key))
38
39 return self._memcache.set(key, val, time=time,
40 min_compress_len=min_compress_len)
41
42 def delete(self, key, time=0):
43 key = "".join((self.key_prefix, key))
44
45 return self._memcache.delete(key, time=time)