Я пытаюсь использовать memcache для кэширования данных, восстановленных из хранилища данных. Хранение укусов работает нормально. Но нельзя ли хранить объект? Я получаю сообщение об ошибке "TypeError: объект 'str' не вызывается" при попытке сохранить с этим:
pageData = StandardPage(page)
memcache.add(memcacheid, pageData, 60)
Я прочитал в документации, что для него требуется «Тип значения может быть любым значением, поддерживаемым модулем Python pickle для сериализации значений». Но на самом деле не понимаю, что это такое. Или как конвертировать pageData в него.
Есть идеи?
.. Фредрик
EDIT:
Мне было немного неясно. 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))