memcache_object_store.py revision 5821806d5e7f356e8fa4b058a389a808ea183019
1# Copyright (c) 2012 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5from appengine_wrappers import memcache
6from object_store import ObjectStore, CACHE_TIMEOUT
7
8class _AsyncMemcacheGetFuture(object):
9  def __init__(self, rpc):
10    self._rpc = rpc
11
12  def Get(self):
13    return self._rpc.get_result()
14
15class MemcacheObjectStore(ObjectStore):
16  def SetMulti(self, mapping, namespace, time=CACHE_TIMEOUT):
17    memcache.Client().set_multi_async(mapping, namespace=namespace, time=time)
18
19  def GetMulti(self, keys, namespace, time=CACHE_TIMEOUT):
20    rpc = memcache.Client().get_multi_async(keys, namespace=namespace)
21    return _AsyncMemcacheGetFuture(rpc)
22
23  def Delete(self, key, namespace):
24    memcache.delete(key, namespace=namespace)
25