我正在尝试使用memcache来缓存从数据存储中恢复的数据。存储蜇伤很好。但是不能存储一个对象吗?我在尝试存储时遇到错误“TypeError:'str'对象不可调用”:
pageData = StandardPage(page)
memcache.add(memcacheid, pageData, 60)
我在文档中读到它需要“值类型可以是Python pickle模块支持序列化值的任何值。”但是不要真正理解那是什么。或者如何将pageData转换为它。
有什么想法吗?
..弗雷德里克
修改
我有点不清楚。 PageType是一个类,其中包括从数据存储区获取数据并对其进行操作。该课程如下:
class PageType():
def __init__(self, page):
self.pageData = PageData(data.Modules.gql('WHERE page = :page', page = page.key()).fetch(100))
self.modules = []
def renderEditPage(self):
self.addModules()
return self.modules
class StandardPage(PageTypes.PageType):
templateName = 'Altan StandardPage'
templateFile = 'templates/page.html'
def __init__(self, page):
self.pageData = PageTypes.PageData(data.Modules.gql('WHERE page = :page', page = page.key()).fetch(100))
self.modules = []
self.childModules = []
for child in page.childPages:
self.childModules.append(PageTypes.PageData(data.Modules.gql('WHERE page = :page', page = child.key()).fetch(100)))
def addModules(self):
self.modules.append(PageTypes.getStandardHeading(self, 'MainHeading'))
self.modules.append(PageTypes.getStandardTextBox(self, 'FirstTextBox'))
self.modules.append(PageTypes.getStandardTextBox(self, 'SecondTextBox'))
self.modules.append(PageTypes.getStandardHeading(self, 'ListHeading'))
self.modules.append(PageTypes.getStandardTextBox(self, 'ListTextBox'))
self.modules.append(PageTypes.getDynamicModules(self))
答案 0 :(得分:0)
您可以使用db.model_to_protobuf
将对象转换为可以存储在memcache中的对象。同样,db.model_from_protobuf
会让你的对象回来。
<强>资源:强>