knu*_*uck 30 python django indexing celery django-haystack
在我的Django项目中,我正在使用Celery.我将来自crontab的命令切换为周期性任务,但它运行良好,但它只是在模型上调用方法.是否可以从周期性任务更新我的Haystack索引?有没有人这样做过?
/manage.py update_index
Run Code Online (Sandbox Code Playgroud)
这是从Haystack文档更新索引的命令,但我不确定如何从任务中调用它.
Jan*_*ann 30
最简单的方法可能是直接从python运行管理命令并在你的任务中运行它
from haystack.management.commands import update_index
update_index.Command().handle()
Run Code Online (Sandbox Code Playgroud)
小智 12
对于haystack的2.0.0版测试版,此代码应该有效:
from haystack.management.commands import update_index
update_index.Command().handle(using='default')
Run Code Online (Sandbox Code Playgroud)
此外,从haystack的第2版开始,你可以从python中调用rebuild index
from haystack.management.commands import update_index, rebuild_index
rebuild_index.Command().handle(interactive=False)
Run Code Online (Sandbox Code Playgroud)
如果您真的想要重建索引,那么" 互动 "会阻止干草堆问问题.这相当于--no-input命令行选项.
如果您使用xapian作为FTS后端,请记住索引的多线程更新将导致DB Write Lock.因此,使用celery-haystack包的解决方案会尝试将索引更新传播到多个worker(多个线程),从而导致使用xapian进行锁定.
| 归档时间: |
|
| 查看次数: |
8026 次 |
| 最近记录: |