r - 从R中的url读取csv文件时超时

标签 r csv timeout

我目前在 R 中有一个脚本,它循环了大约 2000 次(for 循环),并且在每个循环中它使用 url 链接和 read.csv 从数据库中查询数据。函数将数据放入变量中。

我的问题是:当我查询少量数据(大约 10000 行)时,每个循环大约需要 12 秒,这很好。但是现在我每个循环需要查询大约 50000 行数据,并且查询时间增加了很多,每个循环需要 50 秒左右。这对我来说很好,但有时我注意到服务器发送数据需要更长的时间(≈75-90 秒)并且显然连接超时并且我收到这些错误:

Error in file(file, "rt") : cannot open the connection

In addition: Warning message:

In file(file, "rt") : cannot open: HTTP status was '0 (nil)'



或者这个:

Error in file(file, "rt") : cannot open the connection

In addition: Warning message:

In file(file, "rt") : InternetOpenUrl failed: 'The operation timed out'



我不会每次都收到相同的警告,它在这两者之间发生变化。

现在,我想要的是避免我的程序在发生这种情况时停止,或者只是防止此超时错误并告诉 R 等待更多时间来获取数据。我在脚本开始时尝试过这些设置作为可能的解决方案,但它一直在发生。
options(timeout=190)
setInternet2(use=NA)
setInternet2(use=FALSE)
setInternet2(use=NA)

任何其他建议或解决方法?也许在发生这种情况时跳到下一个循环并将此错误发生的循环次数存储在一个变量中,以便最后可以再次查询,但仅限于那些 i由于连接错误而被跳过的循环中的 ?当然,理想的解决方案是避免出现此错误。

最佳答案

使用 RCurl 的解决方案包裹:

您可以更改 timeout选项使用

curlSetOpt(timeout = 200)

或者通过将其传递到对 getURL 的调用中
getURL(url_vect[i], timeout = 200)

使用基础 R 的解决方案:

只需使用 download.file 下载每个文件,然后担心以后操作这些文件。

关于r - 从R中的url读取csv文件时超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19267261/

相关文章:

r - 带有 magrittr tee 运算符的多个 ggplots

r - tidyr VS dplyr + reshape2

r - 如何将新列添加到 R 中的空数据框中

RememberMe 的 onSubmit 登录表单中的 JavaScript 超时函数

删除几列中的重复值但保留行

python - 将 CSV 数据读入 Pandas 数据框时遇到问题 (Python/Pandas)

python - 获取随 secret 钥 :value pairs from dictionary in python

performance - 如何避免在 JMeter 中重复使用 CSV 文件中的用户

java - InetAddress获取IP不一致

python - 超时等待状态更改(变量更改)的有效方法?