another attempt at memcache

This commit is contained in:
mdipierro
2012-08-15 17:18:24 -05:00
parent 4e1ae05402
commit 260842c8ae
2 changed files with 15 additions and 17 deletions
+1 -1
View File
@@ -1 +1 @@
Version 2.00.0 (2012-08-15 17:08:05) dev Version 2.00.0 (2012-08-15 17:18:21) dev
+14 -16
View File
@@ -44,30 +44,28 @@ class MemcacheClientObj(Client):
self.storage = self.meta_storage[app] self.storage = self.meta_storage[app]
def __call__(self, key, f, def __call__(self, key, f,
time_expire=DEFAULT_TIME_EXPIRE, time_expire=DEFAULT_TIME_EXPIRE):
destroyer = None):
if time_expire == None: if time_expire == None:
time_expire = self.max_time_expire time_expire = self.max_time_expire
# this must be commented because get and set are redefined # this must be commented because get and set are redefined
# key = self.__keyFormat__(key) # key = self.__keyFormat__(key)
now = time.time() now = time.time()
value = None value = None
if f is None: if f is None: # force deletion of value
self.delete(key) self.delete(key)
elif time_expire==0: return None
value = f() elif time_expire==0: # value forced expired
self.set(key, value, self.max_time_expire) item = None # value to be computed
self.set(key+':time()', now, self.max_time_expire)
else: else:
value = self.get(key) item = self.get(key)
t0 = self.get(key+':time()') if item:
if value and t0: if (item[0] < now - dt): # value expired
if (t0 < now - dt) and destroyer: item = None # value to be computed
destroyer(value) else:
else: value = item[1]
value = f() if not item:
self.set(key, value, self.max_time_expire) value = f()
self.set(key+':time()', now, self.max_time_expire) self.set(key, (now,value), self.max_time_expire)
return value return value
def increment(self, key, value=1, time_expire=DEFAULT_TIME_EXPIRE): def increment(self, key, value=1, time_expire=DEFAULT_TIME_EXPIRE):