From: Michael Tremer Date: Mon, 19 Nov 2018 16:36:51 +0000 (+0000) Subject: Revert "Drop using memcache" X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e28b082e66d75c09d4c2aa5b113e5c5df6a25083;p=ipfire.org.git Revert "Drop using memcache" This reverts commit 2312d6873f0cef29708de07ac614f417f741d770. Signed-off-by: Michael Tremer --- diff --git a/Makefile.am b/Makefile.am index 0a9f7727..ca83aff7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -57,6 +57,7 @@ backend_PYTHON = \ src/backend/fireinfo.py \ src/backend/geoip.py \ src/backend/iuse.py \ + src/backend/memcached.py \ src/backend/mirrors.py \ src/backend/misc.py \ src/backend/netboot.py \ diff --git a/requirements.txt b/requirements.txt index 7c662595..e34c7a49 100644 --- a/requirements.txt +++ b/requirements.txt @@ -21,6 +21,7 @@ pycparser==2.19 pycrypto==2.6.1 pycurl==7.43.0 python-ldap==3.1.0 +python3-memcached==1.51 sgmllib3k==1.0.0 six==1.11.0 sshpubkeys==3.1.0 diff --git a/src/backend/base.py b/src/backend/base.py index 9e4ae21b..2452eff7 100644 --- a/src/backend/base.py +++ b/src/backend/base.py @@ -9,6 +9,7 @@ from . import database from . import geoip from . import fireinfo from . import iuse +from . import memcached from . import mirrors from . import netboot from . import nopaste @@ -42,6 +43,7 @@ class Backend(object): # Initialize settings first. self.settings = settings.Settings(self) + self.memcache = memcached.Memcached(self) # Initialize backend modules. self.accounts = accounts.Accounts(self) diff --git a/src/backend/memcached.py b/src/backend/memcached.py new file mode 100644 index 00000000..25ff030b --- /dev/null +++ b/src/backend/memcached.py @@ -0,0 +1,50 @@ +#!/usr/bin/python + +import logging +import memcache + +from .misc import Object + +class Memcached(Object): + def init(self): + self._connection = None + + servers = self.get_servers() + + # 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) diff --git a/src/backend/misc.py b/src/backend/misc.py index 80f571b1..c4b04807 100644 --- a/src/backend/misc.py +++ b/src/backend/misc.py @@ -36,6 +36,10 @@ class Object(object): def iuse(self): return self.backend.iuse + @property + def memcache(self): + return self.backend.memcache + @property def planet(self): return self.backend.planet diff --git a/src/web/base.py b/src/web/base.py index 81594f5c..f3b0aed3 100644 --- a/src/web/base.py +++ b/src/web/base.py @@ -190,6 +190,10 @@ class BaseHandler(tornado.web.RequestHandler): def iuse(self): return self.backend.iuse + @property + def memcached(self): + return self.backend.memcache + @property def mirrors(self): return self.backend.mirrors