1

我的 solr 服务无需 HTTP 身份验证即可工作,但我的虚拟主机提供了它,我想利用它。

dotcloud 以 url 的形式为我提供了访问我的 solr 服务的用户名和密码:

'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:未授权”),这当然是有道理的。

我在 haystack 文档中找不到任何关于身份验证的内容。这似乎可以通过 settings.py 中的额外几行来解决,例如:

    HAYSTACK_SOLR_USER = 'dotcloud'
    HAYSTACK_SOLR_PSSWD = 'XXXXXXXXXXXXXXXXXXX'

但是,没有骰子。Haystack 设置的完整列表没有显示任何内容:http: //docs.haystacksearch.org/dev/settings.html

有任何想法吗??

谢谢。

4

1 回答 1

2

我在 dotcloud 上遇到了同样的问题。错误实际上不在 Haystack 中——它在 pysolr 中。Pysolr 假设如果 url 中有一个冒号,那么它后面的所有内容都必须是一个端口号。

一个短期解决方法是在您的 dotcloud solr 服务上使用以下配置来禁用身份验证:

配置:solr_authentication:假

我只会在开发环境中执行此操作,并且如果您那里有不敏感的数据(因为任何人都可以访问该网址)。最终的解决方案是修补 pysolr。

于 2011-09-26T23:37:48.713 回答