2016-09-23 9 views
0

Драгоценный камень HTTParty и встроенный Ruby Net :: HTTP, похоже, не показывают разбивку времени в HTTP-запросе.Есть ли способ получить разбивку таймингов для HTTP-запроса в Ruby?

Например, curl обнажает:

time_appconnect Время, в секундах, он принял от начала до SSL/SSH/и т.д. не подключать/рукопожатия удаленный узел был завершен. (Добавлено в 7.19.0)

time_connect Время, в считанные секунды, взятое с самого начала, до тех пор, пока соединение TCP с удаленным хостом (или прокси) не будет завершено.

time_namelookup Время, в секундах, потребовалось с самого начала, пока не было разрешено разрешение имени.

time_pretransfer Время, в секундах, потребовалось с самого начала, пока передача файла не начнется. Это включает в себя все команды и переговоры перед передачей, которые относятся к конкретному протоколу (-ам).

time_redirect Время, в секундах, которое потребовалось для всех шагов перенаправления, включает поиск имени, подключение, предварительную передачу и передачу до того, как была начата окончательная транзакция. time_redirect показывает полное время выполнения для нескольких перенаправлений. (Добавлено в 7.12.3)

time_starttransfer Время, в секундах, потребовалось с самого начала, пока первый байт не был перенесен. Это включает time_pretransfer, а также время, необходимое серверу для вычисления результата.

time_total Общее время, в секундах, что длилась полная операция. Время будет отображаться с миллисекундным разрешением.

Есть ли способ получить тайминги, такие как DNS, TLS, SSL и handshaking от Ruby или драгоценного камня?

ответ

2

Вы должны использовать Typhoeus, который является оболочкой Ruby для libcurl. http://www.rubydoc.info/github/typhoeus/typhoeus/Typhoeus/Response

Он даст вам тайминги, которые вы ищете на объекте ответа; такие как appconnect_time, connect_time, namelookup_time и т. д.

+0

Также ['curb'] (https://github.com/taf2/curb). – tadman

0

Нет, Net :: HTTP не предоставляет такую ​​информацию.

Возможное (хотя и не очень практичное) решение состоит в том, чтобы профилировать ваш скрипт, используя, например, ruby-prof, чтобы получить время каждого вызова метода и определить время выполнения каждой фазы.