another attempt at memcache
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.00.0 (2012-08-15 17:08:05) dev
|
Version 2.00.0 (2012-08-15 17:18:21) dev
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user