RealTimeSearchIndex из haystack приводит к зависанию django при вводе данных
Я использую 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 ответа
Установка xapian-core и xapian-bindings из исходного кода решила проблему.
Первоначально я использовал RPM-пакеты, представленные здесь.
Обратите внимание на это от автора xapian-haystack:
Поскольку Xapian не поддерживает одновременные подключения WritableDatabase, настоятельно рекомендуется, чтобы пользователи позаботились о том, чтобы при использовании RealTimeSearchIndex установить WSGIDaemonProcess process =1 или использовать какой-либо другой способ обеспечения того, чтобы не было нескольких попыток записи в индексы. В качестве альтернативы, используйте SearchIndex и cronjob для переиндексации контента через заданные промежутки времени (образец cronjob можно найти здесь http://gist.github.com/216247) или создайте собственный SearchIndex для реализации какой-либо другой формы поддержания ваших индексов в актуальном состоянии.,