I use GAE for, among other things, a synchronization backend for my
mobile app. The mobile app is designed to stay offline for long
periods of time and then report everything that happened while it was
offline to the GAE backend.

I "merge" this sync data into a user's data in an async task, with all
the data being written in just one huge batch put and one huge batch
delete, all within one transaction (a user's data is always contained
within one entity group).

So far this has been working well, according to appstats the
transaction commit frequently takes many seconds (typically around 5)
but just a few hundred MS in wall-clock time. What scares me a little
is when a user has been very active, a sync can result in thousands
(or even tens of thousands) of writes or deletes, and then the commit
takes stomach-turning amounts of time, like in the 30 second range.
Impressively, the wall-clock time is still under a second.

My question is, is there some theoretical maximum for how many
datastore ops can be squeezed into a single transaction within an
async task? When asking the datastore to do a commit that takes a
minute in "cpu-time", will it start timing out at some point? I
haven't hit an upper ceiling yet, but if one exists I'd like to know
about it.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to