]> git.ipfire.org Git - people/jschlag/pbs.git/commitdiff
Initialise memcache only when we need it
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 6 Oct 2017 17:20:59 +0000 (18:20 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 6 Oct 2017 17:20:59 +0000 (18:20 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/cache.py

index 8b64f9e43b5bd50010ddfee23afe9f6aa18f1725..c05cfe91f602338187975e56702a0c24b0b1ed2d 100644 (file)
@@ -5,41 +5,45 @@ import memcache
 
 from . import base
 
+from .decorators import *
+
+log = logging.getLogger("cache")
+log.propagate = 1
+
 class Client(memcache.Client):
        def debuglog(self, str):
-               logging.debug("MemCached: %s" % str)
+               log.debug(str)
 
 
 class Cache(base.Object):
        key_prefix = "pbs_"
 
-       def __init__(self, pakfire):
-               base.Object.__init__(self, pakfire)
-
-               logging.info("Initializing memcache...")
-
-               # Fetching servers from the database configuration.
+       @property
+       def servers(self):
                servers = self.settings.get("memcache_servers", "")
-               self.servers = servers.split()
 
-               logging.info("  Using servers: %s" % ", ".join(self.servers))
+               return servers.split()
+
+       @lazy_property
+       def _cache(self):
+               logging.debug("Connecting to memcache...")
 
-               self._memcache = Client(self.servers, debug=1)
+               return Client(self.servers, debug=1)
 
        def get(self, key):
-               logging.debug("Querying memcache for: %s" % key)
+               log.debug("Querying for: %s" % key)
 
                key = "".join((self.key_prefix, key))
 
-               return self._memcache.get(key)
+               return self._cache.get(key)
 
        def set(self, key, val, time=60, min_compress_len=0):
                key = "".join((self.key_prefix, key))
 
-               return self._memcache.set(key, val, time=time,
+               return self._cache.set(key, val, time=time,
                        min_compress_len=min_compress_len)
 
        def delete(self, key, time=0):
                key = "".join((self.key_prefix, key))
 
-               return self._memcache.delete(key, time=time)
+               return self._cache.delete(key, time=time)