haystack 的 RealTimeSearchIndex 导致 django 在数据输入时挂起

发布于 2024-08-23 06:28:33 字数 708 浏览 10 评论 0原文

我正在使用 django-haystack 和带有模型数据实时索引 (haystack.indexes.RealTimeSearchIndexing) 的 xapian 后端,它在我的 Ubuntu 服务器上运行良好。但是,当我在 RHEL5 服务器上部署应用程序时,它会导致 django 在数据输入时挂起。

如果我切换到标准 SearchIndex,一切都会很顺利。

手动运行 ./manage.pyrebuild_index 也可以正常工作。

两种设置之间的主要区别在于 Python 版本(2.4.3 与 2.6.4)和 xapian(1.0.4-1 与 1.0.15)。

关于可能出现的问题有什么建议吗?

日志中没有出现任何有趣的内容,并且我尝试了不同的数据库(mysql、sqlite3)和部署方法(mod_python、wsgi),但还没有成功。

我注意到 haystack 文档上的 警告 指出 RealTimeSearchIndex 仅通过 Solr 后端妥善处理,但是我正在运行一个流量非常低的站点,仅偶尔进行写入,因此我可以接受写入时的一些 CPU 开销。

I'm using django-haystack and a xapian backend with real time indexing (haystack.indexes.RealTimeSearchIndexing) of model data and it works fine on my Ubuntu server. However, it causes django to hang upon data entry when I deployed the app on a RHEL5 server.

Everything is hunky dory if I switch to a standard SearchIndex.

Running ./manage.py rebuild_index manually works fine too.

The major differences between the two setups would be the versions of Python (2.4.3 vs 2.6.4) and the xapian (1.0.4-1 vs 1.0.15).

Any suggestions on what may be the problem?

Nothing interesting appears in the logs, and I've tried different databases (mysql, sqlite3) and deployment methods (mod_python, wsgi) with no luck yet.

I have noted the warning on the haystack docs stating that RealTimeSearchIndex is only handled gracefully with a Solr backend, however I'm running a very low traffic site with only occasional writes so I'm fine with some CPU overheads on writes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

云朵有点甜 2024-08-30 06:28:33

从源代码安装 xapian-core 和 xapian-bindings 解决了这个问题。

我最初使用此处提供的 RPM 软件包。

Installing xapian-core and xapian-bindings from source solved the problem.

I initially used the RPM packages provided here.

财迷小姐 2024-08-30 06:28:33

请注意 xapian-haystack 的作者的这一点:

由于 Xapian 不支持同时 WritableDatabase 连接,因此强烈建议用户在使用 RealTimeSearchIndex 时小心设置 WSGIDaemonProcessprocesses=1 或使用其他方式来确保不会多次尝试写入索引。或者,使用 SearchIndex 和 cronjob 以设定的时间间隔重新索引内容(可以在此处找到示例 cronjob http://gist .github.com/216247)或派生您自己的 SearchIndex 来实现保持索引最新的其他形式。

Please note this from the author of xapian-haystack:

Because Xapian does not support simultaneous WritableDatabase connections, it is strongly recommended that users take care when using RealTimeSearchIndex to either set WSGIDaemonProcess processes=1 or use some other way of ensuring that there are not multiple attempts to write to the indexes. Alternatively, use SearchIndex and a cronjob to reindex content at set time intervals (sample cronjob can be found here http://gist.github.com/216247) or derive your own SearchIndex to implement some other form of keeping your indexes up to date.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文