]> git.ipfire.org Git - ipfire.org.git/commitdiff
Revert "Drop using memcache"
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 19 Nov 2018 16:36:51 +0000 (16:36 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 19 Nov 2018 16:36:51 +0000 (16:36 +0000)
This reverts commit 2312d6873f0cef29708de07ac614f417f741d770.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Makefile.am
requirements.txt
src/backend/base.py
src/backend/memcached.py [new file with mode: 0644]
src/backend/misc.py
src/web/base.py

index 0a9f77278f9c8b8b52405a103162ab5290a404fa..ca83aff79777507b9de75bfc6edcc6aa6c5bc317 100644 (file)
@@ -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 \
index 7c6625959984f26f7b3fb2881d69ade3ebb403c7..e34c7a49665d5c75b313f15fe71bc971b544f3b4 100644 (file)
@@ -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
index 9e4ae21b2578626d39758f2362e4e7afb0414b7b..2452eff7a8995619f3678cfcefba14383ac0d752 100644 (file)
@@ -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 (file)
index 0000000..25ff030
--- /dev/null
@@ -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)
index 80f571b10aff7a42b1ec466ae587bbc6709075f1..c4b0480795c2973990f9566be8e58ca3b39af93d 100644 (file)
@@ -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
index 81594f5c462a28ecfeb3dc0c1068b5b276779fb1..f3b0aed31d1a1e02c9df23de43b621d661eb137f 100644 (file)
@@ -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