【发布时间】:2015-12-31 21:50:00
【问题描述】:
我正在尝试迭代大量数据存储记录,目前大约 330,000 条。从概念上讲,每条记录都有一行、一列和一个值,我正在遍历记录并构造一个矩阵,然后我将使用它进行计算。
我得到的错误是:超时:数据存储操作超时,或者数据暂时不可用。
[添加:请注意,我的问题不是应用引擎超时。作为 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、deadline 或 read_policy 有更好的设置吗?
请注意,这个过程是在 CRON 作业中运行的,所以如果它需要很长时间来完成它不会打扰我。剩下的过程需要几秒钟,最难的部分是读入数据。
感谢您的任何想法!
【问题讨论】:
-
许多现有问题都涵盖了这一点。重复。
标签: python google-app-engine google-cloud-datastore large-data-volumes