Das Einstellen eines Objekts in der Django -Cache -API schlägt aufgrund eines Gurkenfehlers fehl
Frage
Ich versuche, ein Objekt in der Django -Cache -API manuell festzulegen, aber es schlägt fehl (ich glaube, aufgrund von Wickeln?) Das Objekt wird mir von einem Dritten gegeben, mein Code ist:
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))
Wenn ich das ausführe, bekomme ich einen Fehler;
Can't pickle <type 'etree._Element'>: import of module etree failed
in - cache.set("user_list_ds", user_list, 10*60) # 10 minutes
Ich bin sehr neu in Python und ich frage mich, wie ich das am besten auflösen kann. Muss ich zuerst etwas überlegen?
Lösung
Es scheint, dass Sie installieren müssen ElementTree
, weil die pickle
Operation versucht und kann die nicht importiert etree
Modul.
UPDATE: Versuchen Sie tatsächlich, Dokumentknoten zu untersuchen? Wenn Sie versuchen, die Daten aus dem Knoten zu zwischenstrahlen, müssen Sie wahrscheinlich eine Verarbeitung des Wertes durchführen, in dem Sie gerade speichern user_list
.