Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(273)

Side by Side Diff: chrome/common/extensions/docs/server2/persistent_object_store.py

Issue 14218004: Devserver: only populate data during cron jobs, meaning all data from instances (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: PTAL Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 # Copyright 2013 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
5 from appengine_wrappers import db, IsDevServer
6 from datastore_models import PersistentObjectStoreItem
7 from future import Future
8 import logging
9 from object_store import ObjectStore
10
11 def log(s):
cduvall 2013/04/17 23:30:37 take out
not at google - send to devlin 2013/04/18 04:05:41 Done.
12 print(s)
13 logging.error(s)
14
15 class _AsyncGetFuture(object):
16 def __init__(self, object_store, keys):
17 self._futures = dict(
18 (k, db.get_async(
19 PersistentObjectStoreItem.CreateKey(object_store._namespace, k)))
20 for k in keys)
21
22 def Get(self):
23 def has_result(key, future):
24 return future.get_result() is not None
25 #if future.get_result() is None:
cduvall 2013/04/17 23:30:37 take out
not at google - send to devlin 2013/04/18 04:05:41 Done.
not at google - send to devlin 2013/04/18 04:05:41 Done.
26 # log('NO: %s' % key)
27 # return False
28 #log('YES: %s' % key)
29 #return True
30 return dict((key, future.get_result().GetValue())
31 for key, future in self._futures.iteritems()
32 if has_result(key, future))
33
34 class PersistentObjectStore(ObjectStore):
35 '''Stores data persistently using the AppEngine Datastore API.
36 '''
37 def __init__(self, namespace):
38 self._namespace = namespace
39
40 def SetMulti(self, mapping):
41 futures = []
42 for key, value in mapping.items():
43 futures.append(db.put_async(
44 PersistentObjectStoreItem.CreateItem(self._namespace, key, value)))
45 # If running the dev server, the futures don't complete until the server is
46 # *quitting*. This is annoying. Flush now.
47 if IsDevServer():
48 [future.wait() for future in futures]
49
50 def GetMulti(self, keys):
51 return Future(delegate=_AsyncGetFuture(self, keys))
52
53 def DelMulti(self, keys):
54 futures = []
55 for key in keys:
56 futures.append(db.delete_async(
57 PersistentObjectStoreItem.CreateKey(self._namespace, key)))
58 # If running the dev server, the futures don't complete until the server is
59 # *quitting*. This is annoying. Flush now.
60 if IsDevServer():
61 [future.wait() for future in futures]
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698