From 1b7b6cf84c607fa2507efd8c19bfcc9abebfa6af Mon Sep 17 00:00:00 2001 From: "fredsa@google.com" Date: Tue, 9 Oct 2012 23:29:16 +0000 Subject: [PATCH] - Use guestbook entity group for consistency in High Replication datastore - db -> ndb git-svn-id: http://google-app-engine-samples.googlecode.com/svn/trunk@163 99225164-8649-0410-878b-2ba91e509939 --- python27/guestbook/guestbook.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/python27/guestbook/guestbook.py b/python27/guestbook/guestbook.py index 05e8815..9a8e219 100644 --- a/python27/guestbook/guestbook.py +++ b/python27/guestbook/guestbook.py @@ -3,20 +3,28 @@ import os import webapp2 from google.appengine.api import users -from google.appengine.ext import db +from google.appengine.ext import ndb + + +# We set a parent key on the 'Greetings' to ensure that they are all in the same +# entity group. Queries across the single entity group will be consistent. +# However, the write rate should be limited to ~1/second. + +def guestbook_key(guestbook_name='default_guestbook'): + return ndb.Key('Guestbook', guestbook_name) jinja_environment = jinja2.Environment( loader=jinja2.FileSystemLoader(os.path.dirname(__file__)), extensions=['jinja2.ext.autoescape']) -class Greeting(db.Model): - author = db.UserProperty() - content = db.StringProperty(multiline=True) - date = db.DateTimeProperty(auto_now_add=True) +class Greeting(ndb.Model): + author = ndb.UserProperty() + content = ndb.StringProperty() + date = ndb.DateTimeProperty(auto_now_add=True) class MainPage(webapp2.RequestHandler): def get(self): - greetings_query = Greeting.all().order('-date') + greetings_query = Greeting.query(ancestor=guestbook_key()).order(-Greeting.date) greetings = greetings_query.fetch(10) if users.get_current_user(): @@ -33,7 +41,7 @@ class MainPage(webapp2.RequestHandler): class Guestbook(webapp2.RequestHandler): def post(self): - greeting = Greeting() + greeting = Greeting(parent=guestbook_key()) if users.get_current_user(): greeting.author = users.get_current_user() -- 2.11.4.GIT