faster init on gae and better gae_memcache

This commit is contained in:
mdipierro
2012-10-11 08:27:58 -05:00
parent b3841e19d2
commit 85edef0802
2 changed files with 19 additions and 12 deletions

View File

@@ -1 +1 @@
Version 2.1.0 (2012-10-10 15:15:45) dev
Version 2.1.0 (2012-10-11 08:27:52) dev

View File

@@ -12,49 +12,56 @@ cache.ram=cache.disk=MemcacheClient(request)
import time
from google.appengine.api.memcache import Client
class MemcacheClient(object):
class MemcacheClient(Client):
client = Client()
def __init__(self, request):
self.request = request
Client.__init__(self)
def __call__(
self,
key,
f,
time_expire=300,
):
):
key = '%s/%s' % (self.request.application, key)
dt = time_expire
value = None
obj = self.get(key)
obj = self.client.get(key)
if obj and (dt == None or obj[0] > time.time() - dt):
value = obj[1]
elif f is None:
if obj:
self.delete(key)
self.client.delete(key)
else:
value = f()
self.set(key, (time.time(), value))
self.client.set(key, (time.time(), value))
return value
def increment(self, key, value=1):
key = '%s/%s' % (self.request.application, key)
obj = self.get(key)
obj = self.client.get(key)
if obj:
value = obj[1] + value
self.set(key, (time.time(), value))
self.client.set(key, (time.time(), value))
return value
def clear(self, key = None):
if key:
key = '%s/%s' % (self.request.application, key)
self.delete(key)
self.client.delete(key)
else:
self.flush_all()
self.client.flush_all()
def delete(self,*a,**b):
return self.client.delete(*a,**b)
def get(self,*a,**b):
return self.client.delete(*a,**b)
def set(self,*a,**b):
return self.client.delete(*a,**b)
def flush_all(self,*a,**b):
return self.client.delete(*a,**b)