Установка объекта в API кеширования Django завершается неудачно из-за ошибки рассола

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

Вопрос

Я пытаюсь вручную установить объект в API-интерфейсе кэша Django, но это не удается (я думаю, из-за травления?) Объект передан мне третьей стороной, мой код:

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))

Когда я запускаю это, я получаю ошибку;

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

Я очень новичок в python, и мне интересно, как лучше решить эту проблему, нужно ли мне сначала что-то мариновать?

Это было полезно?

Решение

Похоже, вам нужно установить ElementTree потому что операция pickle пытается и не удается импортировать модуль etree .

ОБНОВЛЕНИЕ: Глядя на это дальше, вы на самом деле пытаетесь кэшировать узлы документа? Если вы пытаетесь кешировать данные с узла, вам, вероятно, потребуется выполнить некоторую обработку значения, которое вы в данный момент храните в user_list .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top