taggit example python django indexing celery django-haystack

python - example - Actualización de un índice de búsqueda Haystack con Django+Apio



django taggit (4)

En mi proyecto Django, estoy usando Apio. Cambié un comando de crontab para que sea una tarea periódica y funciona bien, pero solo está llamando a un método en un modelo. ¿Es posible actualizar mi índice Haystack de una tarea periódica también? ¿Alguien ha hecho esto?

/manage.py update_index

Ese es el comando para actualizar el índice de la documentación Haystack pero no estoy seguro de cómo llamarlo desde una tarea.


Además, desde la versión 2 del pajar, puede llamar al índice de reconstrucción de python como

from haystack.management.commands import update_index, rebuild_index rebuild_index.Command().handle(interactive=False)

Donde el " interactivo " evitaría que el pajar haga la pregunta si realmente quiere reconstruir el índice. Esto es equivalente a la opción de línea de comando --no-input.

Si usa xapian como backend FTS, recuerde que las actualizaciones multiproceso al índice darían como resultado DB Write Lock. Por lo tanto, la solución con el paquete apio-pajar intenta difundir la actualización del índice en varios trabajadores (múltiples hilos) dando como resultado el bloqueo con xapian.


En cuanto a la versión 2.0.0 beta de haystack, este código debería funcionar:

from haystack.management.commands import update_index update_index.Command().handle(using=''default'')


la forma más sencilla de hacer esto sería ejecutar el comando de administración directamente desde python y ejecutarlo en su tarea

from haystack.management.commands import update_index update_index.Command().handle()