-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathmc.py
More file actions
76 lines (59 loc) · 2.28 KB
/
mc.py
File metadata and controls
76 lines (59 loc) · 2.28 KB
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
from twisted.internet import defer, threads
from twisted.python import threadable, log
threadable.init(1)
import traceback, sys, StringIO
class Mc:
def __init__(self, urls):
self.connection = False
try:
import memcache
self.enabled = True
except ImportError:
log.msg("Error - memcache bindings not installed!")
self.enabled = False
if self.enabled:
self.connection = memcache.Client(urls, debug=1)
def set(self, key, value, time=0):
return threads.deferToThread(self.doSet, key, value, time)
def set_multi(self, mapping, time=0):
return threads.deferToThread(self.doSetMulti, mapping, time)
def delete(self, key):
return threads.deferToThread(self.doDelete, key)
def delete_multi(self, keys):
return threads.deferToThread(self.doDeleteMulti, keys)
def get(self, key):
return threads.deferToThread(self.doGet, key)
def get_multi(self, keys):
return threads.deferToThread(self.doGetMulti, keys)
def increment(self, key):
return threads.deferToThread(self.doIncr, key)
def decrement(self, key):
return threads.deferToThread(self.doDecr, key)
def doSet(self, key, value, time):
if self.enabled: self.connection.set(key, value, time)
return True
def doSetMulti(self, mapping, time):
if self.enabled: self.connection.set_multi(mapping, time)
return True
def doDelete(self, key):
if self.enabled: self.connection.delete(key)
return True
def doDeleteMulti(self, keys):
if self.enabled: self.connection.delete_multi(keys)
return True
def doGet(self, key):
if self.enabled:
value = self.connection.get(key)
else:
return False
return value
def doGetMulti(self, keys):
if self.enabled: values = self.connection.get_multi(keys)
else: return False
return values
def doIncr(self, key):
if self.enabled: self.connection.incr(key)
return True
def doDecr(self, key):
if self.enabled: self.connection.decr(key)
return True