关于 r:open.connection 中的错误已达到超时


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 中,并且我已经将所有这些都放在了一个无限循环中
只有在写入最后一条记录时才会中断。

不是一个漂亮的解决方案,而是一个完美运行且易于实施的解决方案,因为它只重新启动几次并运行到最后,而我只需要它几次。