簡體   English   中英

使用Django + Celery更新Haystack搜索索引

[英]Updating a Haystack search index with Django + Celery

在我的Django項目中,我正在使用Celery。 我將來自crontab的命令切換為周期性任務,但它運行良好,但它只是在模型上調用方法。 是否可以從周期性任務更新我的Haystack索引? 有沒有人這樣做過?

/manage.py update_index

這是從Haystack文檔更新索引的命令,但我不確定如何從任務中調用它。

最簡單的方法可能是直接從python運行管理命令並在你的任務中運行它

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

對於haystack的2.0.0版測試版,此代碼應該有效:

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

此外,從haystack的第2版開始,你可以從python中調用rebuild index

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

如果您真的想要重建索引,那么“ 互動 ”會阻止干草堆問問題。 這相當於--no-input命令行選項。

如果您使用xapian作為FTS后端,請記住索引的多線程更新將導致DB Write Lock。 因此,使用celery-haystack包的解決方案會嘗試將索引更新傳播到多個worker(多個線程),從而導致使用xapian進行鎖定。

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

我發現這個軟件包是一個很棒的,簡單的插件應用程序,通過芹菜提供干草堆索引。 我在一些項目中使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM