Error in open.connection Timeout was reached
我目前正在工作。我是 R 的新手,所以我不知道连接是如何工作的,而谷歌没有帮助的一件事。
我的代码从一个 crest api 获取我的数字。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | df <- readWorksheetFromFile("marketTypeIDS.xls", sheet=1, startRow = 1, endCol = 2) typeIDs <- unname(unlist(df[,1])) calcday<-as.numeric(Sys.Date())-30 currentdate<-as.numeric(Sys.Date()) itemcount <- 0 monthvolumes <- seq(1:11897) baseurl <-"https://public-crest.eveonline.com/market/10000048/types/" monthlyvolume <- (0) tmpvol <- (0) for (i in 1:11897) { itemcount <- fromJSON(paste0(baseurl, typeIDs[i],"/history/"), flatten = TRUE)$totalCount Sys.sleep(0.034) if (itemcount ==0) { monthvolumes[i] <- 0 } else { repeat { currentdate <- as.Date(fromJSON(paste0(baseurl, typeIDs[i],"/history/"), flatten = TRUE)$items[itemcount,8]) Sys.sleep(0.034) if (as.numeric(currentdate)<calcday) { break } tmpvol <- fromJSON(paste0(baseurl, typeIDs[i],"/history/"), flatten = TRUE)$items[itemcount,6] Sys.sleep(0.034) monthlyvolume <- monthlyvolume+tmpvol itemcount <- itemcount-1 if (itemcount==0) { break } } monthvolumes[i]<-monthlyvolume monthlyvolume<-0 } } |
它停在?700(应该超过11000次)然后给我这个错误:
1 2 3 4 5 6 7 8 9 10 | Error in open.connection(con,"rb") : Timeout was reached 6 open.connection(con,"rb") 5 open(con,"rb") 4 parse_con(txt, 1024^2, bigint_as_char) 3 parseJSON(txt, bigint_as_char) 2 fromJSON_string(txt = txt, simplifyVector = simplifyVector, simplifyDataFrame = simplifyDataFrame, simplifyMatrix = simplifyMatrix, flatten = flatten, ...) 1 fromJSON(paste0(baseurl, typeIDs[i],"/history/"), flatten = TRUE) In addition: Warning message: closing unused connection 3 (https://public-crest.eveonline.com/market/10000048/types/18/history/) |
此连接是在第一次运行 for 循环时创建的(它以链接中的 18 开头)
我怎么能事先关闭这个连接,这样它就不会破坏循环? (这只运行了大约一个小时,因此很难通过"尝试"进行测试)
提前感谢您的帮助!
如果你有任何其他建议,我的耳朵是开放的!
我解决了这个问题,所以它在什么时候中断并不重要。
如果有的话,它总是从最后一个写入记录开始。
因此,我没有从 1 循环遍历 11897 条记录,而是从输出文件中读出了最后写入的内容。
我已经像@hrbrmstr 建议的那样将所有这些都package在一个 Try/Catch 中,并且我已经将所有这些都放在了一个无限循环中
只有在写入最后一条记录时才会中断。
不是一个漂亮的解决方案,而是一个完美运行且易于实施的解决方案,因为它只重新启动几次并运行到最后,而我只需要它几次。