Мне нужно сделать несколько (миллионов) запросов GET к серверу API, который я размещаю локально, но у меня нет предыдущего опыта HTTP для их оптимизации.
Изначально я использовал httr
пакета, но поскольку ответы довольно сложны, выполнение запросов GET заняло довольно много времени.
Коллега предложил сделать асинхронные запросы, поэтому я выбрал пакет crul
, который строит мои запросы в следующем путь:
req <- crul::Async$new(urls = urls)
res <- req$get()
res <- lapply(res, function(z) z$parse("UTF-8"))
res <- lapply(res, function(z) jsonlite::fromJSON(z))
, где urls
- это символьный вектор, содержащий все URL-адреса, к которым мне нужно отправлять запросы.
Время выполнения кода составляет около трети от того, что было ранее, но так как я планирую сделать много запросов, любая дальнейшая оптимизация будет очень приветствоваться. Я искал способы сделать это, все еще используя crul
, но не увенчался успехом. Я также читал, что curl
- это пакет более низкого уровня, поэтому его использование, вероятно, ускорит процесс, но, поскольку у меня нет опыта работы с HTTP / curl, я предположил, что использование более удобного для пользователя пакета сделает мой жизнь проще Но хорошо, я все еще буду использовать это, если это то, что я должен сделать:)
Надеюсь услышать от вас.