R中的GET in for循环需要更快(httr)

时间:2019-01-18 13:49:12

标签: r loops get try-catch httr

我需要编写一个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连接失败的时间越长,则无法发送更多的行。

如果,我将不胜感激

  • 有人可以告诉我一种发送请求的更快方法-也许没有嵌套的for循环
  • 并向我展示如何使用以下代码执行以下操作:“如果由于互联网连接而导致get请求失败,请在尝试下一个get请求之前重试3次。直到发送完i的所有元素为止” / li>

亲切的问候,

0 个答案:

没有答案
相关问题