![](/img/trans.png)
[英]django-haystack with elastic search not building index for newly created objects
[英]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.