правильный шаблон использования Ktor HttpClient - PullRequest
1 голос
/ 17 июня 2020

Каков правильный образец использования HttpClient в KTOR. Должен ли я использовать его как синглтон для каждого жизненного цикла приложения или я должен создавать его для каждого запроса?

Ответы [ 2 ]

2 голосов
/ 18 июня 2020

Я бы сказал, что у вас может быть более одного клиента на приложение, если вам нужно подключиться к более чем одной логической службе. Но если вы имеете дело с одним единственным HTTP-сервером, лучше иметь одного клиента, потому что он устанавливает и поддерживает соединение с сервером. Он также выделяет следующие ресурсы: подготовленные потоки, сопрограммы и соединения. Если у вас несколько клиентов, у вас могут закончиться эти ресурсы.

1 голос
/ 17 июня 2020

Следует ли мне использовать его как синглтон для каждого жизненного цикла приложения или я должен создавать его для каждого запроса

Создание экземпляра http-клиента обычно требует значительных ресурсов, поэтому вам не следует создавать экземпляр клиента для каждого запроса. Вы должны создать только один экземпляр http-клиента для каждого жизненного цикла приложения , внедряемый везде, где требуется в вашем приложении, гарантируя, что

  • вы использовали правильные конфигурации http-клиента, такие как размер пула потоков, timeouts et c
  • вы освобождаете ресурсы после завершения работы приложения.

Клиент может быть настроен с помощью HttpClientEngineConfig ( do c) или любого из его наследников. Подробнее в документации здесь .

...