Действие контроллера Rails имеет условие, посредством которого при выполнении подключается к API.
Class GuestController
if @book.quantity - @book.guests.count == 0
call_book_api
Теперь этот конкретный вызов должен иметь время отклика, которое будет отличаться от других вызовов. Необходимо установить таймаут в отношении ответа метода call_book_api с некоторыми данными (будь то положительные или отрицательные).
@result = HTTParty.post(
'https://test.co.uk/interface/Book',
:body => JSON.parse(@book).to_json,
headers: {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Host' => 'test.co.uk',
'Connection' => 'Keep-Alive'
}
)
Как это можно эффективно определить на уровне действий?
Это также означает, что на вопрос нельзя ответить (по крайней мере, не дать хорошего ответа), не зная, как реализован call_book_api.
вызов API использует действие контроллера с HTTParty.post на адрес https. определены четыре заголовка: Content-Type, Accept, Host и Connection.
Можете ли вы добавить к вопросу соответствующий код вместо того, чтобы заставлять нас угадывать?





Согласно описанию, упомянутому в сообщении, вы хотите установить тайм-аут при вызове стороннего API с использованием httparty gem.
Используйте указанный ниже код, если это запрос на получение
response = HTTParty.get('YOUR_URL', timeout: 10)
Если это тип сообщения, используйте следующий код:
response = HTTParty.post('YOUR_URL', body: params, timeout: 10)
это тайм-аут в секундах?
Единственный общий способ использовать
Timeout.timeout, но это не хорошая идея. Вместо этого вы должны установить тайм-аут, используя любой HTTP-клиент, используемый вcall_book_api.