La configuración de un objeto en la API de caché de Django falla debido a un error de pickle
Pregunta
Estoy intentando configurar manualmente un objeto en la API de caché de Django, pero falla (creo que debido al decapado) El objeto me lo entrega un tercero, mi código es:
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))
Cuando ejecuto esto recibo un error;
Can't pickle <type 'etree._Element'>: import of module etree failed
in - cache.set("user_list_ds", user_list, 10*60) # 10 minutes
Soy muy nuevo en Python, y me pregunto cuál es la mejor manera de resolver esto. ¿Tengo que decantar algo primero?
Solución
Parece que necesita instalar ElementTree
, porque la operación pickle
intenta y falla al importar el módulo etree
.
ACTUALIZACIÓN: Mirándolo más a fondo, ¿está realmente intentando almacenar en caché los nodos del documento? Si está intentando almacenar en caché los datos del nodo, es probable que deba procesar el valor que está almacenando actualmente en user_list
.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow