RealTimeSearchIndex из haystack приводит к зависанию django при вводе данных - PullRequest
4 голосов
/ 03 марта 2010

Я использую django-haystack и xapian backend с индексированием данных модели в режиме реального времени (haystack.indexes.RealTimeSearchIndexing), и он отлично работает на моем сервере Ubuntu. Тем не менее, это приводит к зависанию django при вводе данных, когда я развернул приложение на сервере RHEL5.

Все будет просто, если я переключусь на стандарт SearchIndex.

Запуск ./manage.py rebuild_index тоже работает нормально.

Основными различиями между этими двумя установками будут версии Python (2.4.3 против 2.6.4) и xapian (1.0.4-1 против 1.0.15).

Есть предложения, в чем может быть проблема?

Ничего интересного в журналах не появляется, и я попробовал разные базы данных (mysql, sqlite3) и методы развертывания (mod_python, wsgi), но пока безуспешно.

Я отметил предупреждение в документах о стоге сена, в котором говорится, что RealTimeSearchIndex изящно обрабатывается только с помощью бэкэнда Solr, однако у меня очень низкий трафик с редкими записями, поэтому хорошо с некоторыми нагрузками на процессор при записи.

Ответы [ 2 ]

2 голосов
/ 04 марта 2010

Установка xapian-core и xapian-bindings из исходного кода решила проблему.

Я изначально использовал RPM-пакеты, предоставленные здесь .

1 голос
/ 04 марта 2010

Обратите внимание на это от автора xapian-haystack :

Поскольку Xapian не поддерживает одновременные подключения WritableDatabase, настоятельно рекомендуется, чтобы пользователи позаботились о том, чтобы при использовании RealTimeSearchIndex либо устанавливать процессы WSGIDaemonProcess = 1, либо использовать какой-либо другой способ обеспечения того, чтобы не было нескольких попыток записи в индексы. В качестве альтернативы используйте SearchIndex и cronjob для переиндексации контента через заданные промежутки времени (образец cronjob можно найти здесь http://gist.github.com/216247) или создайте собственный SearchIndex для реализации какой-либо другой формы поддержания ваших индексов в актуальном состоянии.

...