]>
Commit | Line | Data |
---|---|---|
e28b082e MT |
1 | #!/usr/bin/python |
2 | ||
3 | import logging | |
4 | import memcache | |
5 | ||
6 | from .misc import Object | |
7 | ||
8 | class 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(" ", "-") |