没有ReferenceProperty的memcache实体

2024-10-02 00:20:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个要存储在memcache中的实体列表。这个 问题是我有大模型被他们引用 ReferenceProperty也自动存储在memcache中。 因此,我超出了存储在中的对象的大小限制 内存缓存。在

有没有可能阻止ReferenceProperties 在将引用的模型放入memcache时加载它们?在

我试过

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

在类中,我想存储在memcache中,但似乎不是这样 诀窍。在

如有任何建议,我们将不胜感激。在

编辑:我通过添加一个日志语句来验证__getstate__-方法已执行。在


Tags: 对象内存模型self实体列表modeldef
2条回答

对于大型实体,您可能希望手动处理相关实体的加载,方法是将大型实体的键存储为ReferenceProperty之外的其他内容。这样,您可以选择何时加载大型实体,何时不加载。只需使用长属性存储ID或字符串属性来存储键名。在

odict = self.copy()
del odict.model

可能比使用dict要好(除非getstate需要返回dict-我不熟悉它)。但不确定这是否解决了你的问题。。。您可以在模型中实现del来测试它是否被释放。对我来说,你好像还在某个地方拿着推荐信。在

同时查看pickle模块-您必须将所有内容存储在一个键下,但它自动保护您不受对同一对象的多个引用(只存储一次)。抱歉,没有链接,移动客户端;)

祝你好运!在

相关问题 更多 >

    热门问题