#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?