initial commit
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
Developed by Robin Bhattacharyya (memecache for GAE)
|
||||
Released under the web2py license (LGPL)
|
||||
|
||||
from gluon.contrib.gae_memcache import MemcacheClient
|
||||
cache.ram=cache.disk=MemcacheClient(request)
|
||||
"""
|
||||
|
||||
import time
|
||||
from google.appengine.api.memcache import Client
|
||||
|
||||
|
||||
class MemcacheClient(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)
|
||||
if obj and (dt == None or obj[0] > time.time() - dt):
|
||||
value = obj[1]
|
||||
elif f is None:
|
||||
if obj:
|
||||
self.delete(key)
|
||||
else:
|
||||
value = f()
|
||||
self.set(key, (time.time(), value))
|
||||
return value
|
||||
|
||||
def increment(self, key, value=1):
|
||||
key = '%s/%s' % (self.request.application, key)
|
||||
obj = self.get(key)
|
||||
if obj:
|
||||
value = obj[1] + value
|
||||
self.set((time.time(), value))
|
||||
return value
|
||||
|
||||
def clear(self, key):
|
||||
key = '%s/%s' % (self.request.application, key)
|
||||
self.delete(key)
|
||||
|
||||
Reference in New Issue
Block a user