有没有一种简单的方法来计算存储在App Engine中的实体的大小?我想知道一个特定实体离达到1MB实体大小上限有多近。
有没有一种简单的方法来计算存储在App Engine中的实体的大小?我想知道一个特定实体离达到1MB实体大小上限有多近。
App Engine将每个实体存储为protobuf。 您可以使用 此处描述的 db.model_to_protobuf()
函数手动将实体转换为 protobuf,然后使用标准的len()
方法来确定其大小(以字节为单位)。
示例用法:
from google.appengine.ext import db
sz_in_bytes = len(db.model_to_protobuf(some_entity).Encode())
Kekito在下面的评论中指出,对于ndb
实体需要采用不同的方法(感谢Kekito!):
len(some_entity._to_pb().Encode())
ndb
或者至少某些ndb
属性一起使用(我正在使用压缩的BlobProperty
),但是以下代码可以正常工作:len(some_entity._to_pb().Encode())
。 - new name