Disable view source for Developer Tools.
[chromium-blink-merge.git] / chrome / common / extensions / docs / server2 / memcache_object_store.py
blob78d924166b3ff3da33d6632d81886b23d109e3a9
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.
5 import logging
7 from appengine_wrappers import memcache
8 from object_store import ObjectStore
10 class _AsyncMemcacheGetFuture(object):
11 def __init__(self, rpc):
12 self._rpc = rpc
14 def Get(self):
15 return self._rpc.get_result()
17 class MemcacheObjectStore(ObjectStore):
18 def __init__(self, namespace):
19 self._namespace = namespace
21 def SetMulti(self, mapping):
22 # talking_alarm_clock always fails because the zip is too big.
23 # TODO(kalman): store example zips in blobstore.
24 if any(key.find('talking_alarm_clock') != -1 for key in mapping.iterkeys()):
25 return
26 try:
27 memcache.Client().set_multi_async(mapping, namespace=self._namespace)
28 except ValueError as e:
29 logging.error('Caught "ValueError: %s" when mapping keys %s' % (
30 e, mapping.keys()))
32 def GetMulti(self, keys):
33 rpc = memcache.Client().get_multi_async(keys, namespace=self._namespace)
34 return _AsyncMemcacheGetFuture(rpc)
36 def DelMulti(self, keys):
37 memcache.delete_multi(keys, namespace=self._namespace)