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

时间:2013-08-15 18:58:06

标签: python google-app-engine app-engine-ndb

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

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

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

如果这种情况变得很慢是不正常的,那么知道这样做会很有帮助,所以我可以去寻找我可能会做的事情来阻止它。

1 个答案:

答案 0 :(得分:7)

简答:是的。

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

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