Повторное использование соединений с reqwest

#rest #rust #https #reqwest

Вопрос:

Мне нужно выполнить длинную последовательность вызовов REST на один и тот же сервер (назовем это myapi.com так ). На данный момент я использую библиотеку Rust reqwest следующим образом:

  • Я создаю a reqwest::Client со всеми настройками по умолчанию.
  • Для каждого звонка на ОТДЫХ:
    • Я использую client.post("https://myapi.com/path/to/the/api") для создания reqwest::RequestBuilder .
    • Я настраиваю RequestBuilder , чтобы получить reqwest::Request .
    • Я send() то Request , читал то reqwest::Response .
    • Я бросаю все , кроме Client «Начни сначала».

Я читал в документах, что reqwest предполагается объединить соединения в одном и том же Client . Учитывая , что я всегда использую одно и то же Client , я ожидал бы, что первый вызов API займет немного больше времени (из-за начальных рукопожатий TCP и HTTPS). Тем не менее, я всегда наблюдаю постоянную, довольно высокую задержку во всех запросах. Итак, мне интересно, используются ли соединения вообще повторно или каждый раз восстанавливаются. Если это не так, как мне восстановить одно и то же соединение? Я чувствую, что задержка была бы значительно уменьшена, если бы я мог сэкономить на некоторых обходах.

Комментарии:

1. Не можете ли вы отслеживать принятые TCP-соединения на своем сервере или использовать tcpdump/wireshark для обнаружения сегментов SYN/FIN? (просто чтобы убедиться, что эти множественные соединения действительно происходят, прежде чем выполнять рефакторинг кода)

2. Это очень хороший момент! Сервер, к сожалению, не мой. Я не очень разбираюсь в сетях низкого уровня, не могли бы вы подробнее рассказать о предложенной вами стратегии wireshark?