Основным недостатком при работе с AppEngine было ограничение в 1 тыс. Запросов, о котором уже упоминалось в комментариях. Однако я не упомянул о том, что существует встроенный порядок сортировки, с помощью которого можно обойти эту проблему.
Из кулинарной книги приложения:
def deepFetch(queryGen,key=None,batchSize = 100):
"""Iterator that yields an entity in batches.
Args:
queryGen: should return a Query object
key: used to .filter() for __key__
batchSize: how many entities to retrieve in one datastore call
Retrieved from http://tinyurl.com/d887ll (AppEngine cookbook).
"""
from google.appengine.ext import db
# AppEngine will not fetch more than 1000 results
batchSize = min(batchSize,1000)
query = None
done = False
count = 0
if key:
key = db.Key(key)
while not done:
print count
query = queryGen()
if key:
query.filter("__key__ > ",key)
results = query.fetch(batchSize)
for result in results:
count += 1
yield result
if batchSize > len(results):
done = True
else:
key = results[-1].key()
Приведенный выше код вместе с Remote API (см. в этой статье ) позволяет получить столько объектов, сколько вам нужно.
Вы можете использовать вышеуказанный код следующим образом:
def allMyModel():
q = MyModel.all()
myModels = deepFetch(allMyModel)