Solr аутентификация (с использованием Django Haystack)

Мой сервис solr работает без HTTP-аутентификации, но мой веб-хостинг предоставляет его, и я бы хотел воспользоваться этим.

Мне дали имя пользователя и пароль для доступа к моему сервису solr через dotcloud в виде URL:

'HTTP://dotcloud:XXXXXXXXXXXXXXXXXXXX@gigsmash-teamfoobar.dotcloud.com/solr/'

Когда я указываю своему браузеру на этот адрес, он работает просто отлично.

В моем файле settings.py у меня есть следующая строка:

    HAYSTACK_SOLR_URL = 'http://dotcloud:XXXXXXXXXXXXXXXXXXX@gigsmash-teamfoobar.dotcloud.com/solr/' 

но когда я запускаю./manage.py build_solr_schema, я получаю следующую ошибку:

ValueError: недопустимый литерал для int() с основанием 10: "XXXXXXXXXXXXXXXXXX@gigsmash-teamfoobar.dotcloud.com"

У меня нет проблем с построением схемы, если я удаляю URL, но тогда я не могу создать индекс ("Ошибка 401: НЕАУРИЗОВАН"), что, конечно, имеет смысл.

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

    HAYSTACK_SOLR_USER = 'dotcloud'
    HAYSTACK_SOLR_PSSWD = 'XXXXXXXXXXXXXXXXXXX'

но не игра в кости. Полный список настроек Haystack ничего не показывает по этим направлениям: http://docs.haystacksearch.org/dev/settings.html.

Есть идеи??

Благодарю.

1 ответ

Решение

Я столкнулся с той же проблемой на dotcloud. Ошибка на самом деле не в стоге сена - это в pysolr. Pysolr предполагает, что если в URL есть двоеточие, все, что находится после него, должно быть номером порта.

Одним из кратковременных решений будет использование следующей конфигурации в вашем сервисе dotcloud solr для отключения аутентификации:

config: solr_authentication: false

Я сделал бы это только в среде разработчиков, и если у вас есть данные, которые не являются конфиденциальными (так как любой может получить этот URL). Окончательное решение заключается в исправлении pysolr.

Другие вопросы по тегам