Есть ли простой способ рассчитать размер объекта, хранящегося в App Engine? Я хотел бы знать, как близко какой-то конкретный объект попадает на верхний предел 1 МБ на размер сущности.
Как рассчитать размер объекта, хранящегося в Google App Engine?
Ответ 1
Механизм приложений хранит каждый объект как protobuf. Вы можете использовать функцию db.model_to_protobuf()
, описанную здесь, чтобы вручную преобразовать ваш объект в protobuf, а затем использовать стандартный метод len()
для определения его размера в байтах.
Пример использования:
from google.appengine.ext import db
sz_in_bytes = len(db.model_to_protobuf(some_entity).Encode())
Обновление для ndb
Kekito указывает в комментариях ниже, что для сторон ndb
необходим другой подход (спасибо Kekito!):
len(some_entity._to_pb().Encode())
Ответ 2
Документация Google о том, как сущности кодируются и хранятся:
http://code.google.com/appengine/articles/storage_breakdown.html