我正在将"云"之外的Google App Engine Web应用程序移动到标准Web框架(webpy),我想知道如何实现Gae上提供的memcache功能.
在我的应用程序中,我只使用此缓存来存储每隔X小时从远程api检索到的一堆数据; 换句话说,我并没有过多地强调这个缓存.
我天真地实现了这样的事情:
class TinyCache(): class _Container(): def __init__(self, value, seconds): self.value = value self.cache_age = datetime.now() self.cache_time = timedelta(seconds = seconds) def is_stale(self): return self.cache_age + self.cache_time < datetime.now() def __init__(self): self.dict_cache={} def add(self, key, value, seconds = 7200): self.dict_cache[key] = self._Container(value, seconds) def get(self, key): if key in self.dict_cache: if self.dict_cache[key].is_stale(): del self.dict_cache[key] return None else: return self.dict_cache[key].value else: return None
典型用法是:
data = tinycache.get("remote_api_data") if data is not None: return data else: data = self.api_call() tinycache.add("remote_api_data", data, 7200) return data
我怎么能改进它?
我需要将其设为线程安全吗?