/
mcwrapper.py
60 lines (49 loc) · 1.3 KB
/
mcwrapper.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from cachemanager import namespacer
class MemcachedWrapper(object):
"""
Wrapper around an memcached.Client object to implement
parts of a Python map used for caching in urldammit
http://www.tummy.com/Community/software/python-memcached/
>>> import memcache
>>> mc = memcache.Client(['127.0.0.1:11211'])
>>> mcw = MemcachedWrapper(mc)
>>> 'foo' in mcw
False
>>> mcw['foo'] = 'bar'
>>> 'foo' in mcw
True
>>> mcw['foo'] == 'bar'
True
>>> del mcw['foo']
>>> 'foo' in mcw
False
"""
def __init__(self, mc, namespace):
self.mc = mc
def __len__(self):
raise Exception("Not implemented")
@namespacer
def __contains__(self, key):
return self.mc.get(key) != None
@namespacer
def __setitem__(self, key, val):
self.mc.set(key, val)
@namespacer
def __getitem__(self, key):
val = self.mc.get(key)
if val == None:
raise KeyError(key)
return val
@namespacer
def __delitem__(self, key):
if self.mc.delete(key) == 0:
raise KeyError(key)
def __repr__(self):
return "MemcachedWrapper"
def _test():
import doctest
doctest.testmod()
if __name__ == '__main__':
_test()