Установка объекта в API кеширования Django завершается неудачно из-за ошибки рассола - PullRequest
2 голосов
/ 24 октября 2009

Я пытаюсь вручную установить объект в 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, и мне интересно, как лучше решить эту проблему, мне нужно сначала что-то засолить?

1 Ответ

2 голосов
/ 24 октября 2009

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

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

...