Use req_throttle()
to ensure that repeated calls to req_perform()
never
exceed a specified rate.
Arguments
- req
A httr2 request object.
- rate
Maximum rate, i.e. maximum number of requests per second. Usually easiest expressed as a fraction,
number_of_requests / number_of_seconds
, e.g. 15 requests per minute is15 / 60
.- realm
A string that uniquely identifies the throttle pool to use (throttling limits always apply per pool). If not supplied, defaults to the hostname of the request.
Value
A modified HTTP request.
See also
req_retry()
for another way of handling rate-limited APIs.
Examples
# Ensure we never send more than 30 requests a minute
req <- request(example_url()) |>
req_throttle(rate = 30 / 60)
resp <- req_perform(req)
throttle_status()
#> realm last_request
#> 1 127.0.0.1 2024-11-19 07:53:43
resp <- req_perform(req)
#> Waiting 2s for throttling delay ■■■■■■■■■■■■■■■
#> Waiting 2s for throttling delay ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
throttle_status()
#> realm last_request
#> 1 127.0.0.1 2024-11-19 07:53:45