La définition d'un objet dans l'API de cache Django échoue en raison d'une erreur de pickle

StackOverflow https://stackoverflow.com/questions/1615721

Question

J'essaie de définir manuellement un objet dans l'API de cache Django mais cela échoue (je pense en raison du pickling?) L'objet m'est donné par un tiers, mon code est:

def index(request, template_name="mytemplate.htm"):
    user_list = cache.get("user_list_ds")
    if user_list is None:
            # this is the expensive bit I'm trying to cache
            # given to me by a third part
        user_list = graffiti.user_list("top", 100).responseObj().blocks()
        cache.set("user_list_ds", user_list, 10*60) # 10 minutes

    return render_to_response(template_name, { 'user_list' : user_list,}, context_instance = RequestContext(request))

Lorsque je lance ceci, une erreur se produit;

Can't pickle <type 'etree._Element'>: import of module etree failed
in -    cache.set("user_list_ds", user_list, 10*60) # 10 minutes 

Je suis très novice en python et je me demande quelle est la meilleure solution pour résoudre ce problème. Dois-je mariner quelque chose en premier?

Était-ce utile?

La solution

Il semble que vous deviez installer ElementTree . , car l'opération pickle tente et ne peut pas importer le module etree .

UPDATE: En regardant plus loin, essayez-vous réellement de mettre en cache des nœuds de document? Si vous essayez de mettre en cache les données du nœud, vous devrez probablement traiter la valeur que vous stockez actuellement dans liste_utilisateurs .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top