Я создаю приложение, которое включает парсер общедоступного API. Я хочу ограничить скорость своих запросов, но не фиксированной скоростью, а динамической рандомизированной скоростью, которая изменяется между запросами и попадает в определенный диапазон, то есть я могу установить минимальную и максимальную задержку между запросами.
Я также не хочу блокировать текущий поток.
Я исследовал алгоритмы Guava Ratelimiter, RatelimitJ и Token bucket, но, глядя на документы, я не понимаю, как что-то из этих вещей может достичь того, чего я хочу.
Пример желаемого эффекта на мои запросы при диапазоне ограничения скорости 250-350 мс:
- Сделать заявку №1
- подождите 321 мс
- Сделать заявку №2
- подождите 259 мс
- Сделать заявку №3
- подождите 337 мс
- ...