批量放置()限制

ste*_*vep 4 google-app-engine

批量放置更新现有记录是硬限制还是性能降级限制?我有一个任务队列进程,处理数千个现有记录.在进程循环结束时,对于所有记录,索引的BooleanProperty从False更改为True.对于每次执行5,000条记录与嵌套批量放置是否有后果,以便每次完成500次更新10次?TIA -stevep

Dan*_*son 6

批处理API将根据需要处理大量请求,因此您不需要自己执行此操作.该库管理限制,例如服务调用的总大小和可以放入单个调用中的实体数量,并对服务进行适当的调用次数.(根据图书馆代码,每次拨打电话看起来似乎是1兆字节和500个实体,但你的应用程序不需要知道,这些可能会改变.)分割你的put()调用没有任何好处,你如果您尝试,可能会意外地拨打超出必要的服务电话.

  • 一个警告:取决于实体的复杂性(主要由属性数量决定,多次计算列表属性),将5000个实体转换为协议缓冲区对象(在将它们序列化为请求之前是必需的)可能会使用很多内存.不幸的是,丹·桑德森提到的批次分裂并没有同时最小化内存中的protobuf对象的数量.因此,如果您遇到内存错误,自己创建小批量实际上可能会有所帮助. (5认同)