On Oct 29, 6:24 pm, Joshua Smith <[email protected]> wrote:
> I'm running into a too-large exception when I bulk put a bunch of entities.
> So obviously, I need to break up my puts into batches. I want to do
> something like this pseudo code:
>
> size = 0
> for o in objects:
> if size + o.size() > 1MB:
> db.put(list)
> size = 0
> list = []
> list.append(o)
>
> Any idea what I could use for the "o.size()" method? I could crawl through
> all the fields and build up an estimate, but it seems likely to me that there
> is a way to get the API-size of an entity more elegantly.
How about something like:
from google.appengine.api import datastore
from google.appengine.runtime import apiproxy_errors
def put_all(entities, **kw):
try:
return datastore.Put(entities, **kw)
except apiproxy_errors.RequestTooLargeError:
n = len(entities) / 2
a, b = entities[:n], entities[n:]
return put_all(a, **kw).extend(put_all(b, **kw))
--
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.