RCurl多个API调用会生成无限连接

时间:2014-07-30 23:27:59

标签: r api curl rcurl

我正在使用RCurl一次处理多个http请求。 (使用httr::GETRJSONIO时我没有问题,但有几百万条记录。)

我正在使用fcc.gov api将lat,long信息转换为人口普查区块级别(FIPS代码)。

基本上,我有以JSON格式返回的URL列表。

> head(urls)
[1] "http://data.fcc.gov/api/block/find?format=json&latitude=42.644825&longitude=-83.40611&showall=false"   
[2] "http://data.fcc.gov/api/block/find?format=json&latitude=40.8434&longitude=-74.540344&showall=false" 
> res[1:1000] = str_extract(as.character(getURL(urls[1:1000])),
 "[0-9]{15}")

这基本上就是我如何处理getURL函数,并在不将RSON中的JSON转换为df的情况下提取相关信息,这是不必要的。

一次getURL> write.csv(res, "res1.csv", row.names = F) Error in file(file, ifelse(append, "a", "w")) : cannot open the connection Calls: write.csv -> eval.parent -> eval -> eval -> write.table -> file In addition: Warning message: In file(file, ifelse(append, "a", "w")) : cannot open file 'res1.csv': Too many open files Execution halted sh: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: Error 24 个来电请求请求,我正在循环播放数百万条记录。

问题是它为每个实例建立了一个连接,并且从不在libcurl级别断开连接或关闭。 当我尝试将最终输出写入csv或RDS文件时,它无法处理并给出系统错误“太多打开的文件”。

url

我可以使用基础close和{{1}},但对于大量数据,我需要使用RCurl来提高效率。但是,由于这种限制,我无法继续。

R中似乎没有可以一次处理多个http请求的替代方案。

任何帮助将不胜感激。

0 个答案:

没有答案