объекты memcache без ReferenceProperty - PullRequest
2 голосов
/ 20 июля 2009

У меня есть список сущностей, которые я хочу сохранить в memcache. проблема в том, что у меня есть большие модели, на которые ссылаются их ReferenceProperty, которые также автоматически сохраняются в memcache. В результате я превышаю ограничение размера для объектов, хранящихся в Memcache.

Есть ли возможность запретить ReferenceProperties от загрузка ссылочных моделей во время помещения их в memcache?

Я пробовал что-то вроде

def __getstate__(self): 
    odict = self.__dict__.copy() 
    odict['model'] = None 
    return odict 

в классе, который я хочу сохранить в memcache, но, похоже, этого не происходит трюк.

Любые предложения будут высоко оценены.

Редактировать: Я добавил, добавив в лог-оператор, что __getstate__ -метод выполняется.

Ответы [ 2 ]

1 голос
/ 26 июля 2009

Для больших объектов вы можете вручную обрабатывать загрузку связанных объектов, сохраняя ключи больших объектов как нечто отличное от ReferenceProperty. Таким образом, вы можете выбрать, когда загружать большие объекты, а когда нет. Просто используйте длинные идентификаторы хранилища свойств или строковое свойство для хранения имен ключей.

0 голосов
/ 20 июля 2009
odict = self.copy()
del odict.model

, вероятно, было бы лучше, чем использовать dict (если только GetState не должен возвращать dict - я не знаком с ним). Не уверен, что это решит Вашу проблему, хотя ... Вы можете реализовать del в Model, чтобы проверить, освобождена ли она. Для меня это выглядит так, как будто Вы все еще где-то держите ссылку.

Также проверьте модуль pickle - вам придется хранить все под одним ключом, но он автоматически защищает вас от множественных ссылок на один и тот же объект (сохраняет его только один раз). Извините, нет ссылки, мобильный клиент;)

Удачи!

...