App Engine反序列化python中的记录:这真的很慢吗?

Tim*_*rks 6 python google-app-engine app-engine-ndb

在分析我的python2.7 App Engine应用程序时,我发现每条记录平均需要7毫秒才能将从ndb获取的记录反序列化为python对象.(在pb_to_query_result,pb_to_entity和他们的后代,这不包括RPC时间来查询数据库,并接收原始的记录.)

这是预期的吗?我的模型有六个属性,其中一个LocalStructuredProperty属性有15个属性,其中还包括一个StructuredProperty具有四个属性的重复属性,但我认为平均对象应该少于30个属性.

预计会这么慢吗?我想获取几千条记录来进行一些简单的聚合分析,虽然我可以忍受一定的延迟,但超过10秒是一个问题.有什么我可以做的重组我的模型或我的架构,使这更可行吗?(除了定期预先计算我的聚合分析并缓存结果的明显解决方案.)

如果它变得如此缓慢是不寻常的,那么知道这样做会很有帮助,所以我可以去寻找我可能正在做的事情,这会损害它.

小智 7

简短回答:是的.

我发现Python中的反序列化非常慢,特别是在涉及重复属性的情况下.显然,GAE-Python反序列化会产生大量的对象.众所周知,效率低下,但显然,没有人愿意接触它,因为它在堆栈中已经存在.

这很不幸.由于这种开销,我们大多数时间运行F4前端(即,更快的CPU ==更快的反序列化).