]> git.ipfire.org Git - ipfire.org.git/blame - src/backend/memcached.py
Use Python's internal asyncio stuff instead of Tornado's
[ipfire.org.git] / src / backend / memcached.py
CommitLineData
e28b082e
MT
1#!/usr/bin/python
2
3import logging
4import memcache
5
6from .misc import Object
7
8class Memcached(Object):
9 def init(self):
517fc763 10 self._connection = memcache.Client(["localhost"], debug=1)
e28b082e
MT
11
12 def get(self, key, *args, **kwargs):
6c484ce7
MT
13 key = self._sanitize_key(key)
14
517fc763 15 logging.debug("Retrieving %s from cache..." % key)
e28b082e 16
517fc763 17 ret = self._connection.get(key, *args, **kwargs)
e28b082e 18
517fc763
MT
19 if ret is None:
20 logging.debug("Found nothing for %s" % key)
21 else:
5d42f49b 22 logging.debug("Found object for %s" % key)
e28b082e 23
517fc763 24 return ret
e28b082e 25
372ef119 26 def get_multi(self, keys, *args, **kwargs):
6c484ce7
MT
27 keys = (self._sanitize_key(key) for key in keys)
28
372ef119
MT
29 logging.debug("Retrieving keys from cache: %s" % keys)
30
31 ret = self._connection.get_multi(keys, *args, **kwargs)
32
33 if ret is None:
34 logging.debug("Found nothing for %s" % keys)
35 else:
5d42f49b 36 logging.debug("Found objects for %s" % keys)
372ef119
MT
37
38 return ret
39
40 def add(self, key, data, *args, **kwargs):
6c484ce7
MT
41 key = self._sanitize_key(key)
42
372ef119
MT
43 if data is None:
44 logging.debug("Putting nothing into cache for %s" % key)
45 else:
5d42f49b 46 logging.debug("Putting object into cache for %s" % key)
372ef119
MT
47
48 return self._connection.add(key, data, *args, **kwargs)
49
517fc763 50 def set(self, key, data, *args, **kwargs):
6c484ce7
MT
51 key = self._sanitize_key(key)
52
eb036c9e
MT
53 if data is None:
54 logging.debug("Putting nothing into cache for %s" % key)
55 else:
5d42f49b 56 logging.debug("Putting object into cache for %s" % key)
e28b082e 57
517fc763 58 return self._connection.set(key, data, *args, **kwargs)
e28b082e
MT
59
60 def delete(self, key, *args, **kwargs):
6c484ce7
MT
61 key = self._sanitize_key(key)
62
e28b082e 63 return self._connection.delete(key, *args, **kwargs)
372ef119
MT
64
65 def incr(self, key):
6c484ce7
MT
66 key = self._sanitize_key(key)
67
372ef119
MT
68 logging.debug("Incrementing key %s" % key)
69
70 return self._connection.incr(key)
6c484ce7
MT
71
72 @staticmethod
73 def _sanitize_key(key):
74 # Memcache does not seem to like any spaces
75 return key.replace(" ", "-")