Ниже приведен код, который я использую для решения этой проблемы, разбивая один большой запрос на несколько маленьких. Я использую библиотеку google.appengine.ext.ndb
- я не знаю, требуется ли это для работы приведенного ниже кода.
(Если вы не используете ndb, подумайте над тем, чтобы перейти на него. Это улучшенная версия библиотеки db и ее легко перенести. Для получения дополнительной информации см. https://developers.google.com/appengine/docs/python/ndb.)
from google.appengine.datastore.datastore_query import Cursor
def ProcessAll():
curs = Cursor()
while True:
records, curs, more = MyEntity.query().fetch_page(5000, start_cursor=curs)
for record in records:
# Run your custom business logic on record.
RunMyBusinessLogic(record)
if more and curs:
# There are more records; do nothing here so we enter the
# loop again above and run the query one more time.
pass
else:
# No more records to fetch; break out of the loop and finish.
break