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
+1 -1
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
+17 -10
View File
@@ -12,12 +12,12 @@ cache.ram=cache.disk=MemcacheClient(request)
import time import time
from google.appengine.api.memcache import Client from google.appengine.api.memcache import Client
class MemcacheClient(object):
class MemcacheClient(Client): client = Client()
def __init__(self, request): def __init__(self, request):
self.request = request self.request = request
Client.__init__(self)
def __call__( def __call__(
self, self,
@@ -28,33 +28,40 @@ class MemcacheClient(Client):
key = '%s/%s' % (self.request.application, key) key = '%s/%s' % (self.request.application, key)
dt = time_expire dt = time_expire
value = None value = None
obj = self.get(key) obj = self.client.get(key)
if obj and (dt == None or obj[0] > time.time() - dt): if obj and (dt == None or obj[0] > time.time() - dt):
value = obj[1] value = obj[1]
elif f is None: elif f is None:
if obj: if obj:
self.delete(key) self.client.delete(key)
else: else:
value = f() value = f()
self.set(key, (time.time(), value)) self.client.set(key, (time.time(), value))
return value return value
def increment(self, key, value=1): def increment(self, key, value=1):
key = '%s/%s' % (self.request.application, key) key = '%s/%s' % (self.request.application, key)
obj = self.get(key) obj = self.client.get(key)
if obj: if obj:
value = obj[1] + value value = obj[1] + value
self.set(key, (time.time(), value)) self.client.set(key, (time.time(), value))
return value return value
def clear(self, key = None): def clear(self, key = None):
if key: if key:
key = '%s/%s' % (self.request.application, key) key = '%s/%s' % (self.request.application, key)
self.delete(key) self.client.delete(key)
else: 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)