Как участник Sunspot и соучредитель Websolr , я рекомендую использовать rescue_from
с небольшим таймаутом.
Что касается Sunspot, похоже, что опция для указания таймаута была недавно добавлена в RSolr, библиотека Sunspot использует, так что если это функция, которая вам нужна, вы должны рассмотреть возможность добавления просьба к Sunspot передать тайм-аут в RSolr.
Генерирование ошибочного запроса к Solr не должно быть таким дорогим, если у вас установлены правильные тайм-ауты. Если Solr не работает, вы хотите, чтобы время открытия TCP-соединения истекло. Работоспособный сервер Solr должен открыть TCP-соединение на порядок меньше секунды и начать отправку данных обратно не более чем через секунду или две для действительно дорогих запросов.
Время ожидания открытия в 0,1 секунды и время ожидания данных в 5 секунд должно быть более чем достаточно.
Следующий лучший вариант здесь - это иметь какой-то другой локальный прокси между вашим приложением и Solr, который может регулировать запросы, когда Solr не работает. Возможно промежуточное программное обеспечение для кэширования или Varnish. Конечно, я бы воспринял это как более сложный подход, если такой прокси или кеш уже не является частью инфраструктуры вашего приложения.