Вопрос:

Ошибка HTTP 400 в R, обработка ошибок, Как повторить попытку, вместо того, чтобы принудительно остановиться?

r api curl error-handling try-catch

812 просмотра

1 ответ

179 Репутация автора

Я вызываю API для загрузки файлов с использованием curlпакета в R. По неизвестной причине иногда разрывается соединение с кодом ошибки:Error in curl_download(url = i, handle = h, df) : HTTP error 400.

Поскольку мне нужно загружать около 100 000 файлов одновременно, и это очень медленно, я бы хотел, чтобы R мог повторить попытку, как только эта ошибка возникнет, вместо того, чтобы выдать мне ошибку и остановить скрипт. Какие-нибудь мысли?

мой код (простая версия):

for (url in allUrl) {
  df <- tempfile()
    tryCatch(
      curl_download(url = url,
                    handle = h,
                    df)
    )
}
Автор: Arthur Источник Размещён: 02.01.2018 09:12

Ответы (1)


1 плюс

734 Репутация автора

Решение

Там пакет Хэдли разработан специально для этого

require(httr)
maxTimes <- 10
testFilename <- "testfile.txt"

for (url in allUrl) {
  RETRY(verb = "GET", url = url, times = maxTimes,
    quiet = FALSE, terminate_on = NULL)
}

В частности, для загрузки файлов с аутентификацией вы можете заменить команду RETRY на:

GET(url, write_disk(path=testFilename, overwrite=TRUE), authenticate("user", "passwd"))
Автор: lilster Размещён: 02.01.2018 09:47
Вопросы из категории :
32x32