Function runs into an error after successfully processing the first few results
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
Disclaimer: This content is shared under creative common license cc-by-sa 3.0. It is generated from StackExchange Website Network.