Perform a request and handle data as it streams back
Source:R/req-perform-stream.R
req_perform_stream.Rd
After preparing a request, call req_perform_stream()
to perform the request
and handle the result with a streaming callback. This is useful for
streaming HTTP APIs where potentially the stream never ends.
Usage
req_perform_stream(
req,
callback,
timeout_sec = Inf,
buffer_kb = 64,
round = c("byte", "line")
)
Arguments
- req
A request.
- callback
A single argument callback function. It will be called repeatedly with a raw vector whenever there is at least
buffer_kb
worth of data to process. It must returnTRUE
to continue streaming.- timeout_sec
Number of seconds to process stream for.
- buffer_kb
Buffer size, in kilobytes.
- round
How should the raw vector sent to
callback
be rounded? Choose"byte"
,"line"
, or supply your own function that takes a raw vector ofbytes
and returns the locations of possible cut points (orinteger()
if there are none).
Value
An HTTP response.
Examples
show_bytes <- function(x) {
cat("Got ", length(x), " bytes\n", sep = "")
TRUE
}
resp <- request(example_url()) |>
req_url_path("/stream-bytes/100000") |>
req_perform_stream(show_bytes, buffer_kb = 32)
#> Got 32768 bytes
#> Got 32768 bytes
#> Got 32768 bytes
#> Got 1696 bytes