最近我不得不将 48,000 条记录导入 Google App Engine。存储的“表”是“ndb.model”类型。为了完整性目的,这些记录中的每一个都会根据“数据库”中的几个其他“表”进行检查,然后写入 (.put())。
为此,我将一个 .csv 文件上传到 Google Cloud Storage,然后在任务队列中对其进行处理。这每秒处理大约 10 .csv 行,并在 41,000 条记录后出现内存不足错误。将 .csv 文件拆分为 2 组 24,000 条记录,每组解决了这个问题。
所以,我的问题是:
a) 这是最好的方法吗?
b) 有没有更快的方法(下一次上传可能是大约 400,000 条记录)?和
c) 我如何克服(或停止)内存不足错误?
非常感谢, 大卫
请您参考如下方法:
1) 您是否考虑过(即使是暂时的)升级您的服务器实例?
https://cloud.google.com/appengine/docs/standard/#instance_classes
2) 我认为 41000 行的 csv 不足以耗尽内存,因此您可能需要更改处理方式:
a) 使用多个任务分解处理,滚动您自己的光标一次处理几千个,然后启动一个新任务。
b) 使用 ndb.put_multi() 进行实验
分享一些你的循环和放置代码可能会有所帮助
