#!/usr/bin/python
+import logging
import memcache
-from misc import Singleton
-from settings import Settings
+from misc import Object
-class Memcached(object):
- __metaclass__ = Singleton
+class Memcached(Object):
+ def init(self):
+ self._connection = None
- def __init__(self):
- # Fetch hosts from database
- hosts = Settings().get("memcached_servers").split(",")
+ servers = self.get_servers()
- self._connection = memcache.Client(hosts, debug=0)
+ # Nothing to do, if no servers have been configured.
+ if not servers:
+ logging.warning("No memcache servers defined")
+ return
+
+ logging.info("Using memcache servers: %s" % ", ".join(servers))
+ self._connection = memcache.Client(servers, debug=0)
+
+ def get_servers(self):
+ servers = self.settings.get("memcached_servers")
+
+ if servers:
+ return servers.split(" ")
def get(self, key, *args, **kwargs):
+ if not self._connection:
+ return
+
key = str(key)
return self._connection.get(key, *args, **kwargs)
def set(self, key, *args, **kwargs):
+ if not self._connection:
+ return
+
key = str(key)
return self._connection.set(key, *args, **kwargs)
def delete(self, key, *args, **kwargs):
+ if not self._connection:
+ return
+
key = str(key)
return self._connection.delete(key, *args, **kwargs)