Я пытаюсь связаться с REST API, используя ActiveResource на Rails 2.3.2.
Я пытаюсь использовать функцию тайм-аута, чтобы, если ресурс, с которым я контактирую, не работал, я мог быстро потерпеть неудачу - я делаю это со следующим:
class WorkspaceResource < ActiveResource::Base
self.timeout = 5
self.site = "http://mysite.com/restAPI"
end
Однако, когда я пытаюсь связаться со службой, когда я знаю, что она недоступна, класс истекает только через 60 секунд по умолчанию. Я могу видеть из стека ошибок, что ошибка тайм-аута действительно происходит из класса ActiveResource в моей папке gem, который имеет надлежащие функции для разрешения настроек тайм-аута, но мой установленный тайм-аут никогда не работает.
Есть мысли?
Так что, очевидно, проблема не в том, что тайм-аут не работает. Я могу запустить сервер локально, сделать так, чтобы он не возвращал ответ в течение срока ожидания, и посмотреть, как работает тайм-аут.
Проблема в том, что если сервер не принимает соединение, тайм-аут не работает так, как я ожидал - он вообще не работает. Похоже, что тайм-аут работает только тогда, когда сервер принимает соединение, но слишком долго, чтобы ответить.
Мне кажется, это проблема - не должен ли работать тайм-аут, когда сервер, с которым я связываюсь, не работает? Если нет, то должен быть другой механизм, чтобы остановить зависание множества запросов ... кто-нибудь знает быстрый способ сделать это?