我需要编写一个R脚本,最后将大量的get请求发送到服务器。我的数据框的每一行都包含一些信息。最后一列“ URL”在每行中建立http请求-例如:https://logsxxx.xxx.com/xx.xx?.....
有可能我必须发送300.000-1.000.000带有脚本的获取请求。 好消息是我的脚本可以工作,并且请求到达服务器。 不好的是,在发送所有行之前,循环要花费大量时间。 300.000行大约需要9个小时。
我已经测试了ifelse或应用是否可行,但是我失败了...
system.time(
for (i in 1:300000){
try(
{
GET(mydata$url[i], timeout(3600))
print(paste("row",i,"sent at",Sys.time()))
}
, silent=FALSE)
}
)
另一个不好的事情是,如果由于任何原因导致Internet连接中断,脚本可能无法发送100%的消息。然后我会看到以下错误:
[1] "row 18 sent at 2019-01-18 14:22:05"
[1] "row 19 sent at 2019-01-18 14:22:06"
[1] "row 20 sent at 2019-01-18 14:22:06"
[1] "row 21 sent at 2019-01-18 14:22:06"
Error in curl::curl_fetch_memory(url, handle = handle) :
Timeout was reached: Connection timed out after 10000 milliseconds
[1] "row 23 sent at 2019-01-18 14:22:16"
[1] "row 24 sent at 2019-01-18 14:22:16"
[1] "row 25 sent at 2019-01-18 14:22:16"
至少脚本不会完全中断,而是继续下一行。问题是Internet连接失败的时间越长,则无法发送更多的行。
如果,我将不胜感激
亲切的问候,