J'essaie d'utiliser memcache pour mettre en mémoire cache les données renvoyées du magasin de données. Le stockage des piqûres fonctionne bien. Mais ne peut-on pas stocker un objet? Je reçois une erreur « Erreur de type: objet « str » est pas appelable » en essayant de stocker avec ceci:Utilisation de memcache pour stocker obj dans google app engine
pageData = StandardPage(page)
memcache.add(memcacheid, pageData, 60)
J'ai lu dans la documentation qu'il exige « Le type de valeur peut être une valeur prise en charge par la Module pickle Python pour la sérialisation des valeurs. " Mais ne comprends pas vraiment ce que c'est. Ou comment convertir pageData en elle.
Des idées?
..fredrik
EDIT:
j'étais un peu clair. PageType est une classe qui, entre autres choses, obtient des données du magasin de données et les manipule. La classe ressemble à ceci:
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))
Pouvez-vous s'il vous plaît inclure le stacktrace? Rien de ce que vous avez collé n'expliquerait l'exception que vous signalez. –
Vous avez raison, c'était dans une autre méthode qui a échoué. J'ai utilisé une instance d'une autre classe (qui n'était pas nécessaire) ou je l'ai changée en data = {}. Et ça a marché! – fredrik