Я в настоящее время застрял с проблемой времени отклика с библиотекой HTTP Фарадея.Я использую следующий код для инициализации запроса POST к серверу, работающему на моей локальной машине 127.0.0.1.Сервер возвращает допустимую строку JSON.Код для инициализации объекта Фарадея на стороне клиента выглядит следующим образом:
url = 'http://127.0.0.1'
conn = Faraday.new(:url => url) do |faraday|
faraday.request :url_encoded
faraday.response :json, :content_type => 'application/json'
faraday.adapter Faraday.default_adapter
end
Затем я отправляю строку JSON через запрос POST на сервер.Код для отправки запроса выглядит следующим образом (размер текста до 5000 символов):
payload = {:language => 'en', :text => 'some text'}.to_json
response = conn.post do |req|
req.url '/api'
req.headers['Content-Type'] = 'application/json'
req.body = payload
end
Ожидаемый результат - строка JSON следующей структуры:
{
"level1.1" : [
{
"level2.1" : [
{
"value1" : "Text",
"value2" : "Text",
"value(...)" : "Text",
"value(n)" : "Text"
},
{...
}
],
<and so on... - of course in a valid JSON structure ending>
Когда язапустить код, ничего не делая с результатом, который он выполняет довольно хорошо и заканчивается за разумное время (<0,5 с).Но как только я пытаюсь получить доступ к объекту ответа, сценарий становится ужасно медленным. </p>
Просто добавив строку:
p response.body
Время обработки увеличивается до> 8 с.
Я проверил ответ сервера почтальоном, и он работает абсолютно нормально, без каких-либо видимых проблем.Время отклика в Почтальоне также> 0,5 с.Замедление появляется только на стороне клиента, когда я пытаюсь получить доступ к объекту ответа.Простая проверка объекта ответа также не влияет на время обработки.Но как только я начинаю «что-то делать» с ответом, он становится ужасно медленным.
Я использую Ruby 2.5.3 и Faraday 0.15.4 / Middleware 0.12.2
AnyИдея, которая может вызвать это замедление, очень ценится.
Krid
EDIT
Несмотря на мой комментарий, что HTTParty решил эту проблему, это было просто из-заменьшая полезная нагрузка.HTTParty и Faraday оба плохо работают на моем POST-запросе, в то время как POST-запрос от Postman выполняется очень быстро даже при больших нагрузках.Я понятия не имею, что вызывает такое различное поведение во время выполнения при запросе к одному и тому же серверному приложению с одинаковой полезной нагрузкой.
Как уже говорилось, любые идеи, которые могут указывать мне в правильном направлении, очень ценятся.
Крид