HttpClient ограничивает количество запросов по данным в секунду - PullRequest
0 голосов
/ 17 декабря 2018

Мне нужно отправлять запросы в конечную точку API REST, но есть ограничение (налагаемое API) - я не могу отправить более 10 МБ / с.

Каждый запрос имеет фиксированный размер (для простоты предположим, что 1 МБ).

Я мог бы создать коллекцию из 10 запросов и подождать, пока все они не будут выполнены, и если прошло менее секунды, я бы подождал, прежде чем отправлять еще один раунд запросов.

Это было бы хорошои я нашел этот вопрос , который касается этой проблемы.

Однако я не ограничен количеством вызовов в секунду, а скорее данными в секунду!

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

Сценарий пограничного случая может представлять собой 1 запрос, который занимает много времени (например, 5 секунд), тогда как для всех остальных требуется 0,9 секунды.Я мог бы начать еще один раунд из 9 запросов, в то время как 5-секундный запрос требует своего времени!

К сожалению, все решения, которые я нашел, сосредоточены либо на ограничении данных (но для потоков), либо на количестве запросов, ноне оба.

Как я могу гарантировать, что при отправке http-запросов я использую только 10 МБ / с, но не блокируюсь некоторыми запросами, выполнение которых занимает больше времени, чем другие?

...