在Google App Engine中使用memcache存储对象
我正在尝试使用memcache来缓存从数据存储中获取的数据。存储字符串没问题。但是,存储对象就不行了。当我尝试用以下代码存储时,出现了一个错误:“TypeError: 'str' object is not callable”。
pageData = StandardPage(page)
memcache.add(memcacheid, pageData, 60)
我在文档中看到,它要求“值的类型可以是Python pickle模块支持的任何值,用于序列化值。”但我对这个概念不是很理解。也不知道怎么把pageData转换成这个格式。
有没有什么想法?
..fredrik
编辑:
我之前说得不太清楚。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))
1 个回答
0