Skip to content
Fix Code Error

Function runs into an error after successfully processing the first few results

July 16, 2021 by Code Error
Posted By: Anonymous

I have some data that I am trying to apply a function over. It goes to a URL, collects the JSON data and then stores it into a folder on my computer.

I apply the following code:

downloadAndStoreJSONData <- function(jsonLink, provinceFolderLoc, provincia, rowID, groupID, provincesFolderLocationsNames){
  print(paste("Processing: ", provincia, ".", "Group number: ", groupID, "Row number: ", rowID))
  jsonLink = jsonLink %>% unlist()
  JSON_in = fromJSON(jsonLink)
  write_json(JSON_in, paste(provinceFolderLoc, "/", provincesFolderLocationsNames, ".json", sep = ""))
  Sys.sleep(10)
}

pmap(list(df2$json_link, df2$titleFolderLocations, df2$provincia, df2$rowID, df2$groupID, df2$provincesFolderLocationsNames), ~downloadAndStoreJSONData(..1, ..2, ..3, ..4, ..5, ..6))

Which works, my output is the following (with the error)

[1] "Processing:  Albacete . Group number:  1 Row number:  1"
[1] "Processing:  Albacete . Group number:  2 Row number:  2"
[1] "Processing:  Albacete . Group number:  3 Row number:  3"
[1] "Processing:  Albacete . Group number:  4 Row number:  4"
[1] "Processing:  Albacete . Group number:  5 Row number:  5"
[1] "Processing:  Albacete . Group number:  6 Row number:  6"
[1] "Processing:  Albacete . Group number:  9 Row number:  9"
[1] "Processing:  Albacete . Group number:  10 Row number:  10"
[1] "Processing:  Alicante/Alacant . Group number:  1 Row number:  11"
[1] "Processing:  Alicante/Alacant . Group number:  2 Row number:  12"
[1] "Processing:  Alicante/Alacant . Group number:  3 Row number:  13"
[1] "Processing:  Alicante/Alacant . Group number:  4 Row number:  14"
 Error in open.connection(con, "rb") : 
  OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104 

Traceback:

 Error in open.connection(con, "rb") : 
  OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104 
9.
open.connection(con, "rb") 
8.
open(con, "rb") 
7.
parse_con(txt, bigint_as_char) 
6.
parseJSON(txt, bigint_as_char) 
5.
parse_and_simplify(txt = txt, simplifyVector = simplifyVector, 
    simplifyDataFrame = simplifyDataFrame, simplifyMatrix = simplifyMatrix, 
    flatten = flatten, ...) 
4.
fromJSON(jsonLink) 
3.
downloadAndStoreJSONData(..1, ..2, ..3, ..4, ..5, ..6) 
2.
.f(.l[[1L]][[i]], .l[[2L]][[i]], .l[[3L]][[i]], .l[[4L]][[i]], 
    .l[[5L]][[i]], .l[[6L]][[i]], ...) 
1.
pmap(list(df2$json_link, df2$titleFolderLocations, df2$provincia, 
    df2$rowID, df2$groupID, df2$provincesFolderLocationsNames), 
    ~downloadAndStoreJSONData(..1, ..2, ..3, ..4, ..5, ..6)) 

Why is it processing the data up to a point and then just stopping? Is the website kicking me off their servers?

When I ran the function with a Sys.sleep of 1 I got this error sooner:

[1] "Processing:  Albacete . Group number:  1 Row number:  1"
[1] "Processing:  Albacete . Group number:  2 Row number:  2"
[1] "Processing:  Albacete . Group number:  3 Row number:  3"
[1] "Processing:  Albacete . Group number:  4 Row number:  4"
[1] "Processing:  Albacete . Group number:  5 Row number:  5"
 Error in open.connection(con, "rb") : 
  OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104 

Should I increase the sleeping time, and some random noise into it?

NOTE: Applying the function will take 5-10 minutes to process.

Data:

df2 <- structure(list(index = c("2.1.1", "2.1.2", "2.1.3", "2.1.4", 
"2.1.5", "2.1.6", "2.1.9", "2.1.10", "2.2.1", "2.2.2", "2.2.3", 
"2.2.4", "2.2.5", "2.2.6", "2.2.9", "2.2.10", "2.3.1", "2.3.2", 
"2.3.3", "2.3.4"), title = c("Indicadores de renta media y mediana", 
"Distribución por fuente de ingresos", "Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y nacionalidad", 
"Porcentaje de población con ingresos por unidad de consumo por debajo/encima de determinados umbrales relativos por sexo", 
"Índice de Gini y Distribución de la renta P80/P20", "Indicadores demográficos", 
"Indicadores de renta media y mediana", "Distribución por fuente de ingresos", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y nacionalidad", 
"Porcentaje de población con ingresos por unidad de consumo por debajo/encima de determinados umbrales relativos por sexo", 
"Índice de Gini y Distribución de la renta P80/P20", "Indicadores demográficos", 
"Indicadores de renta media y mediana", "Distribución por fuente de ingresos", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad"
), link = c("https://www.ine.es/jaxiT3/Tabla.htm?t=30656&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30813&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=30657&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30659&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=30660&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30661&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=37678&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30814&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=30833&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30834&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=30835&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30836&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=30837&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30838&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=37733&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30841&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=30842&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30843&L=0", "https://www.ine.es/jaxiT3/Tabla.htm?t=30844&L=0", 
"https://www.ine.es/jaxiT3/Tabla.htm?t=30845&L=0"), provincia = c("Albacete", 
"Albacete", "Albacete", "Albacete", "Albacete", "Albacete", "Albacete", 
"Albacete", "Alicante/Alacant", "Alicante/Alacant", "Alicante/Alacant", 
"Alicante/Alacant", "Alicante/Alacant", "Alicante/Alacant", "Alicante/Alacant", 
"Alicante/Alacant", "Almería", "Almería", "Almería", "Almería"
), provincesFolderLocationsNames = c("Albacete", "Albacete", 
"Albacete", "Albacete", "Albacete", "Albacete", "Albacete", "Albacete", 
"Alicante_Alacant", "Alicante_Alacant", "Alicante_Alacant", "Alicante_Alacant", 
"Alicante_Alacant", "Alicante_Alacant", "Alicante_Alacant", "Alicante_Alacant", 
"Almería", "Almería", "Almería", "Almería"), provincesFolderLocations = c("/home/bscuser/Escritorio/mobility/data/INE/Albacete", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete", "/home/bscuser/Escritorio/mobility/data/INE/Albacete", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete", "/home/bscuser/Escritorio/mobility/data/INE/Albacete", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete", "/home/bscuser/Escritorio/mobility/data/INE/Albacete", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete", "/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant", 
"/home/bscuser/Escritorio/mobility/data/INE/Almería", "/home/bscuser/Escritorio/mobility/data/INE/Almería", 
"/home/bscuser/Escritorio/mobility/data/INE/Almería", "/home/bscuser/Escritorio/mobility/data/INE/Almería"
), titleFolderLocationsNames = c("Indicadores de renta media y mediana", 
"Distribución por fuente de ingresos", "Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y nacionalidad", 
"Porcentaje de población con ingresos por unidad de consumo por debajo_encima de determinados umbrales relativos por sexo", 
"Índice de Gini y Distribución de la renta P80_P20", "Indicadores demográficos", 
"Indicadores de renta media y mediana", "Distribución por fuente de ingresos", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y nacionalidad", 
"Porcentaje de población con ingresos por unidad de consumo por debajo_encima de determinados umbrales relativos por sexo", 
"Índice de Gini y Distribución de la renta P80_P20", "Indicadores demográficos", 
"Indicadores de renta media y mediana", "Distribución por fuente de ingresos", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad"
), titleFolderLocations = c("/home/bscuser/Escritorio/mobility/data/INE/Albacete/Indicadores de renta media y mediana", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete/Distribución por fuente de ingresos", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete/Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete/Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete/Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y nacionalidad", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete/Porcentaje de población con ingresos por unidad de consumo por debajo_encima de determinados umbrales relativos por sexo", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete/Índice de Gini y Distribución de la renta P80_P20", 
"/home/bscuser/Escritorio/mobility/data/INE/Albacete/Indicadores demográficos", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant/Indicadores de renta media y mediana", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant/Distribución por fuente de ingresos", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant/Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant/Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant/Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y nacionalidad", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant/Porcentaje de población con ingresos por unidad de consumo por debajo_encima de determinados umbrales relativos por sexo", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant/Índice de Gini y Distribución de la renta P80_P20", 
"/home/bscuser/Escritorio/mobility/data/INE/Alicante_Alacant/Indicadores demográficos", 
"/home/bscuser/Escritorio/mobility/data/INE/Almería/Indicadores de renta media y mediana", 
"/home/bscuser/Escritorio/mobility/data/INE/Almería/Distribución por fuente de ingresos", 
"/home/bscuser/Escritorio/mobility/data/INE/Almería/Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo", 
"/home/bscuser/Escritorio/mobility/data/INE/Almería/Porcentaje de población con ingresos por unidad de consumo por debajo de determinados umbrales fijos por sexo y tramos de edad"
), json_link = list("https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30656?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30813?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30657?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30659?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30660?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30661?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/37678?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30814?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30833?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30834?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30835?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30836?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30837?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30838?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/37733?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30841?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30842?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30843?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30844?tip=AM&", 
    "https://servicios.ine.es/wstempus/js/es/DATOS_TABLA/30845?tip=AM&"), 
    rowID = c(1L, 2L, 3L, 4L, 5L, 6L, 9L, 10L, 11L, 12L, 13L, 
    14L, 15L, 16L, 19L, 20L, 21L, 22L, 23L, 24L), groupID = c(1L, 
    2L, 3L, 4L, 5L, 6L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L, 9L, 
    10L, 1L, 2L, 3L, 4L)), row.names = c(NA, -20L), class = c("tbl_df", 
"tbl", "data.frame"))

Solution

Consider doing this with possibly/safely

library(purrr)
posdownloadAndStoreJSONData <- possibly(downloadAndStoreJSONData, otherwise = NA_character_)

 out <- pmap(list(df2$json_link, df2$titleFolderLocations, df2$provincia, df2$rowID, df2$groupID, df2$provincesFolderLocationsNames), ~ posdownloadAndStoreJSONData(..1, ..2, ..3, ..4, ..5, ..6))
Answered By: Anonymous

Related Articles

  • processing and downloading JSON files into specific folders
  • How to properly do JSON API GET requests and assign output…
  • How to parse JSON with XE2 dbxJSON
  • Maven2: Missing artifact but jars are in place
  • Azure Availability Zone ARM Config
  • The 'compilation' argument must be an instance of…
  • UnsatisfiedDependencyException: Error creating bean with…
  • Python is not calling fucntions properly
  • mongodb group values by multiple fields
  • NullpointerException error while working with choiceBox and…

Disclaimer: This content is shared under creative common license cc-by-sa 3.0. It is generated from StackExchange Website Network.

Post navigation

Previous Post:

If I register multiple listeners on a Firebase document, will it charge me for multiple reads of the same snapshot?

Next Post:

How to insert string values into a empty created py-spark data frame?

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

  • Get code errors & solutions at akashmittal.com
© 2022 Fix Code Error