Как рассчитать размер объекта, хранящегося в Google App Engine?

Есть ли простой способ рассчитать размер объекта, хранящегося в App Engine? Я хотел бы знать, как близко какой-то конкретный объект попадает на верхний предел 1 МБ на размер сущности.

Ответ 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())