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.