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