Я пытаюсь перебрать огромное количество записей хранилища данных, в настоящее время около 330 000. Понятно, что каждая запись имеет строку, столбец и значение, и я повторяю записи и строю матрицу, которую я буду использовать для вычислений.Невозможно перебрать огромное количество записей DataStore
Ошибка, которую я получаю: Тайм-аут: время работы хранилища данных или данные временно недоступны.
[ADDED: УКАЗЫВАЙТЕ, что моя проблема не является таймаутом в приложении. Выполняя работу CRON, у меня много времени, и ошибка хранилища данных происходит быстрее, чем время автономной работы приложения. Кроме того, я попытался ответить на другие вопросы, как я упоминал ниже.]
Ошибка происходит после того, как итерация проходит менее 100 000 записей.
Мой текущий код, который я написал после консультации в прошлом связанные темы, является:
prodcauses_query = ProdCause.query(projection=['prod_id', 'value', 'cause']).filter(ProdCause.seller_id == seller_id)
for pc in prodcauses_query.iter(read_policy=ndb.EVENTUAL_CONSISTENCY, deadline=600):
### COPY DATA IN RECORD PC INTO A MATRIX
### row is prod_id, col is cause, value is value
Есть ли лучший способ сделать это, чем ITER? Любые лучшие настройки для batch_size или крайнего срока или read_policy?
Обратите внимание, что этот процесс выполняется в задании CRON, поэтому меня это не беспокоит, если для этого требуется много времени. Остальная часть процесса занимает несколько секунд, жесткая часть читается в данных.
Спасибо за любые мысли!
много существующие вопросы обложка это. DUP. –
Возможный дубликат [Время ожидания Google App Engine?] (Http://stackoverflow.com/questions/7328582/google-app-engine-time-out) –