Question

Dans mon projet Django J'utilise Céleri. Je suis passé sur une commande crontab être une tâche périodique et il fonctionne bien, mais il est juste appeler une méthode sur un modèle. Est-il possible de mettre à jour mon index Haystack d'une tâche périodique ainsi? Quelqu'un at-il fait cela?

/manage.py update_index

C'est la commande de mettre à jour l'index de la documentation Haystack mais je ne suis pas sûr comment appeler que d'une tâche.

Était-ce utile?

La solution

la meilleure façon de le faire serait probablement pour exécuter la commande de gestion directement à partir de python et l'exécuter dans votre tâche

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

Autres conseils

En ce qui concerne la version 2.0.0 bêta de botte de foin, ce code devrait fonctionner:

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

En outre, depuis la version 2 de la botte de foin, vous pouvez appeler reconstruire l'index de python comme

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

Lorsque la " interactive " empêcherait botte de foin question demandant si vous voulez vraiment reconstruire l'index. Ceci est équivalent à la commande --no-entrée option de ligne.

Si vous utilisez xapian comme FTS backend s'il vous plaît rappelez-vous que les mises à jour multithread à l'index entraînerait DB Write Lock. Ainsi, la solution avec le paquet céleri-botte de foin ne tente d'indice de propagation dans la mise à jour des travailleurs multiples (fil multiple) résultant dans la serrure avec xapian.

https://github.com/django-haystack/celery-haystack

Je trouve ce paquet d'être un grand, plug-in application facile à fournir une indexation botte de foin par le céleri. Je l'ai utilisé dans quelques projets.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top