diff --git a/VERSION b/VERSION index c6411511..0096d842 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.00.0 (2012-08-15 17:08:05) dev +Version 2.00.0 (2012-08-15 17:18:21) dev diff --git a/gluon/contrib/memcache/__init__.py b/gluon/contrib/memcache/__init__.py index 7079e176..b98a72f3 100644 --- a/gluon/contrib/memcache/__init__.py +++ b/gluon/contrib/memcache/__init__.py @@ -44,30 +44,28 @@ class MemcacheClientObj(Client): self.storage = self.meta_storage[app] def __call__(self, key, f, - time_expire=DEFAULT_TIME_EXPIRE, - destroyer = None): + time_expire=DEFAULT_TIME_EXPIRE): if time_expire == None: time_expire = self.max_time_expire # this must be commented because get and set are redefined # key = self.__keyFormat__(key) now = time.time() value = None - if f is None: + if f is None: # force deletion of value self.delete(key) - elif time_expire==0: - value = f() - self.set(key, value, self.max_time_expire) - self.set(key+':time()', now, self.max_time_expire) + return None + elif time_expire==0: # value forced expired + item = None # value to be computed else: - value = self.get(key) - t0 = self.get(key+':time()') - if value and t0: - if (t0 < now - dt) and destroyer: - destroyer(value) - else: - value = f() - self.set(key, value, self.max_time_expire) - self.set(key+':time()', now, self.max_time_expire) + item = self.get(key) + if item: + if (item[0] < now - dt): # value expired + item = None # value to be computed + else: + value = item[1] + if not item: + value = f() + self.set(key, (now,value), self.max_time_expire) return value def increment(self, key, value=1, time_expire=DEFAULT_TIME_EXPIRE):