我目前正在构建一个使用gem sunspot
为我的应用程序提供搜索功能的Rails 3.2应用程序。 sunspot
使用Apache Solr执行全文索引和搜索。如果sunspot-solr不可用,则构建故障安全
def index
@search = Article.search do
fulltext params[:search]
with(:published_at).less_than(Time.zone.now)
paginate :page => params[:page], :per_page => 10
facet(:published_month)
end
@articles = @search.results
respond_to do |format|
format.html # index.html.erb
format.json { render json: @articles }
end
end
现在我的代码只是在每次有人点击文章索引页面然后呈现结果时执行搜索。我担心的是,solr
出于某种原因,我的应用程序因此死亡。如何在solr
宕机时执行基本的Article.all
此操作的故障安全?
我知道我只能从例外中得到rescue
,但这仍然意味着每个请求都会生成连接尝试solr
。有没有办法来防止这种情况? (例如捕捉异常一次,然后等待5分钟,应用程序尝试重新连接到solr
之前)
+1用于解释高可用性选项。 – aitchnyu 2012-02-04 16:40:02
很好解释和帮助了很多!谢谢。 – halfdan 2012-02-06 10:49:16
我刚刚叉'太阳黑子',以允许设置超时,但后来我发现这个提交:https://github.com/sunspot/sunspot/commit/abc3b472c917cea50e6e5ace813a4d13ad1ac08a 所以它已经实施。太好了! – halfdan 2012-02-06 12:30:55