У меня есть код, в котором я запрашиваю API с помощью пакета jsonlite .

Моя просьба:

aux <- fromJSON (www ... js)

Проблема в том, что есть ограничение по времени на запросы и иногда возвращается ошибка:

*Error in open.connection (con, "rb"): HTTP error 429.*

Мне это нужно, когда возникает ошибка, код ждет X секунд и делает новый запрос, и это повторяется, пока я не получу запрошенные данные.

Я нашел функции try и tryCatch и пакет retry . Но я не мог заставить его работать так, как мне нужно.

0
Antonio Mendes 10 Фев 2021 в 11:25

1 ответ

Лучший ответ

Попробуйте такой подход:

aux <- tryCatch(fromJSON (www ... js), error = function(e) {return(NA)})

while(all(is.na(aux))) {
  Sys.sleep(30) #Change as per requirement. 
  aux <- tryCatch(fromJSON(www ... js), error = function(e) {return(NA)})
}
1
Ronak Shah 10 Фев 2021 в 08:33