faster init on gae and better gae_memcache
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.1.0 (2012-10-10 15:15:45) dev
|
Version 2.1.0 (2012-10-11 08:27:52) dev
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user