R ошибок в цикле: файл (con, "r") и open.connection(con, "rb")

Я загружаю серию URL, которые являются файлами JSON, в список списка, который будет проанализирован позже.

    baseurl <- "http://zoeken.kvk.nl/Address.ashx?site=handelsregister&partialfields=&q=010"
    pages <- list()

    for(i in 1:99999){
      if(i < 10000){
        message("ignoring page ", i)
      }
      if(i >= 10000){
        message("Retrieving page ", i)
        mydata <- RJSONIO::fromJSON(paste0(baseurl,i), flatten=TRUE) 

        pages[[i+1]] <- mydata$resultatenHR
# adding adjustment 1
        options(timeout = 4000000)
# adding adjustment 2
        if(i %% 100 == 0){Sys.sleep(2)}
        if(i %% 1000 == 0){Sys.sleep(10)}
      }

    }

Тем не менее, в непопулярные моменты я получаю либо код ошибки:

error in open.connection(con, "rb") : Recv failure: Connection was reset. 

или же

Error in file(con, "r") : cannot open the connection

Сначала я попробовал вышеупомянутую настройку 1, а затем настройку 2, но проблема продолжает возникать. Если я попытаюсь перезапустить цикл в точке ошибки, он снова будет работать до следующей нерегулярной ошибки.

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

NB. Я видел другие темы об ошибках в open.connection, но я не понимал данных ответов, или это не относится к моему типу кода, я думаю...

NB2: я также пытался использовать jsonlite пакет вместо RJSONIO, но это дало те же ошибки в нерегулярные моменты. Спасибо за ваш вклад.

1 ответ

У меня почти точно такая же проблема. Это происходит, особенно когда я пытаюсь загрузить большие наборы данных. Я получаю сообщение об ошибке такого типа: "Ошибка в open.connection(con, "rb"): Ошибка отправки: соединение было сброшено"

  final_results <- list()

  while(i < number){
      query <- paste0(url_start, i)
      json_result <- fromJSON(query)
      final_results[[i]] <- as.data.frame(json_result$records)
      i <- i+1
  }

У кого-нибудь есть идеи, что я здесь делаю не так?

Другие вопросы по тегам