Errores aleatorios de Django Haystack usando Whoosh

Estoy utilizando django-haystack y Whoosh en mi servidor Ubuntu y descubro que ciertas consultas de búsqueda solo generan una página de error, y no tengo idea de por qué sucede esto...

estoy usando los siguientes

Whoosh==2.4.0
django-haystack==1.2.7

y yo tambien corro python manage.py update_index una vez cada hora

Ejemplo de rastreo

Traceback (most recent call last):

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response
   response = callback(request, *callback_args, **callback_kwargs)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/newrelic-1.2.0.246/newrelic/hooks/framework_django.py", line 430, in __call__
   return self.__wrapped(*args, **kwargs)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/haystack/views.py", line 50, in __call__
   return self.create_response()

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/haystack/views.py", line 145, in create_response
   return render_to_response(self.template, context, context_instance=self.context_class(self.request))

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/shortcuts/__init__.py", line 20, in render_to_response
   return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/loader.py", line 188, in render_to_string
   return t.render(context_instance)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/base.py", line 123, in render
   return self._render(context)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/newrelic-1.2.0.246/newrelic/api/function_trace.py", line 82, in __call__
   return self._nr_next_object(*args, **kwargs)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/base.py", line 117, in _render
   return self.nodelist.render(context)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/base.py", line 744, in render
   bits.append(self.render_node(node, context))

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/base.py", line 757, in render_node
   return node.render(context)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 127, in render
   return compiled_parent._render(context)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/newrelic-1.2.0.246/newrelic/api/function_trace.py", line 82, in __call__
   return self._nr_next_object(*args, **kwargs)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/base.py", line 117, in _render
   return self.nodelist.render(context)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/base.py", line 744, in render
   bits.append(self.render_node(node, context))

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/base.py", line 757, in render_node
   return node.render(context)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/newrelic-1.2.0.246/newrelic/hooks/framework_django.py", line 622, in __call__
   return self.__wrapped(*args, **kwargs)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/loader_tags.py", line 64, in render
   result = block.nodelist.render(context)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/base.py", line 744, in render
   bits.append(self.render_node(node, context))

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/base.py", line 757, in render_node
   return node.render(context)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/defaulttags.py", line 311, in render
   return self.nodelist_true.render(context)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/base.py", line 744, in render
   bits.append(self.render_node(node, context))

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/base.py", line 757, in render_node
   return node.render(context)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/defaulttags.py", line 227, in render
   nodelist.append(node.render(context))

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/base.py", line 915, in render
   resolved_vars = [var.resolve(context) for var in self.vars_to_resolve]

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/base.py", line 653, in resolve
   value = self._resolve_lookup(context)

 File "/home/fundedbyme/.virtualenvs/fundedbyme/local/lib/python2.7/site-packages/django/template/base.py", line 692, in _resolve_lookup
   raise VariableDoesNotExist("Failed lookup for key [%s] in %r", (bit, current)) # missing attribute

VariableDoesNotExist: Failed lookup for key [object] in u'None'


<WSGIRequest
GET:<QueryDict: {u'q': [u'stockholm']}>,

preguntado el 22 de mayo de 12 a las 12:05

He notado el mismo comportamiento que se ejecuta contra Xapian, por lo que no creo que esté relacionado con el backend. Lo más probable es que estés usando el highlight etiqueta, porque está mal diseñada y genera esta excepción obtusa cuando result is None. Ahora por qué result is None es una pregunta totalmente diferente. Se siente como un error. -

@ChrisPratt gracias por la respuesta, actualmente no estoy usando la etiqueta de resaltado, pero me resulta bastante frustrante que otras personas tengan estos problemas y muy pocos saben cómo solucionarlos... -

1 Respuestas

¿Podría poner aquí su vista y su código de plantilla? Si esto sucede solo con algunas consultas y no con todas, podrían ser los parámetros que está pasando a la vista. Aquí está el código de la vista que estoy usando para realizar consultas de búsqueda usando Haystack 2.0 y Whoosh 2.3.2 en un proyecto propio:

def search(request):
   sqs = SearchQuerySet().filter(content=AutoQuery(request.GET['q']))
return  render_to_response('search.html', {'sqs': sqs,})

y esto funciona perfectamente bien. Supongo que debería considerar usar la última versión de Haystack, porque estaba experimentando muchos errores con los antiguos estables. Y te recomiendo que uses el "rebuild_index" de vez en cuando también, por si acaso.

Respondido 26 Jul 12, 14:07

No puedo hablar por el OP, pero al menos en mi caso: estoy usando la vista de búsqueda proporcionada por Haystack, por lo que no hay personalización allí. Estoy ejecutando la rama maestra de Haystack y un trabajo cron actualiza el índice cada hora. Pero, gracias por responder. Como dije, no puedo hablar por el OP, por lo que quizás su consejo les resulte útil. - Chris Pratt

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.