|
|
1
4
Memcache调用仍然使用protobuf或不使用protobuf来pickle对象。Pickle使用protobuf对象更快,因为它有一个非常简单的模型 普通pickle对象比protobuf+pickle对象大,因此它们节省了Memcache上的时间,但是在进行protobuf转换时处理器的时间更多 因此,一般来说,这两种方法的结果都差不多……但是 您应该使用protobuf的原因是它可以处理模型版本之间的更改,而Pickle会出错。这个问题总有一天会困扰你的,所以最好早点解决 |
|
|
2
1
pickle和protobufs在appengine中都很慢,因为它们是用纯Python实现的。我发现使用str.join这样的方法编写我自己的简单序列化代码往往更快,因为大部分工作都是用C完成的。但这只适用于简单的数据类型。 |
|
|
3
1
一种更快的方法是将您的模型转换为字典,并使用本机eval/repr函数作为(反)序列化程序——当然要小心,就像使用邪恶的eval一样,但是考虑到没有外部步骤,这里应该是安全的。
下面是一个类实体的例子,它正好实现了这一点。
你首先通过
要取回它,只需使用
它不适用于列表(如果您从查询中获取多个实体),但可以使用诸如“####假模型实体###”之类的标识符作为分隔符,通过连接/拆分函数轻松地进行调整。仅与db.Model一起使用,Expando需要小的调整。
我很欢迎在这方面进行速度测试,我认为这比其他方法要快得多。另外,如果您的模型在此期间发生了变化,您也不会有任何风险。 下面是序列化假实体的外观示例。请特别查看datetime(已创建)以及引用属性(子域): ###假模型实体###
|
|
|
bobi · 如何修复:谷歌登录按钮未经验证 2 年前 |
|
|
Jad Chahine · 谷歌应用引擎灵活环境中的日志出现错误 2 年前 |
|
|
Community wiki · 上下文中的用户和角色 3 年前 |
|
|
Pebii Root · 点击提交按钮时防止重复条目谷歌工作表 3 年前 |
|
|
Pebii · 谷歌表单防止点击提交按钮后出现重复条目 3 年前 |