当前位置: 首页 > 知识库问答 >
问题:

Rcurl::GetURL在循环中运行时偶尔失败

步浩壤
2023-03-14
url <- "ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR105/056/SRR10503056/SRR10503056.fastq.gz" 
for (i in 1:20){
  RCurl::getURL(url, ftp.use.epsv = FALSE, dirlistonly = TRUE)
}

错误:函数中的错误(type,msg,asError=TRUE):Recv失败:对等点重置连接

> sessionInfo()

附加基包:[1]stats4并行stats图形grDevices utils数据集方法基

RCurl版本:1.98-1.3

共有1个答案

谷善
2023-03-14

好的,我有一个没有失败的解决方案:我用一个最大尝试迭代器创建一个try catch,默认5次尝试,等待时间为1秒,此外每个接受的url请求的一般等待时间为0.05秒。

如果有人有更安全的想法,请告诉我:

safe.url <- function(url, attempt = 1, max.attempts = 5) {
    tryCatch(
      expr = {
        Sys.sleep(0.05)
        RCurl::getURL(url, ftp.use.epsv = FALSE, dirlistonly = TRUE)
      },
      error = function(e){
        if (attempt >= max.attempts) stop("Server is not responding to download data,
                                      wait 30 seconds and try again!")
        Sys.sleep(1)
        safe.url(url, attempt = attempt + 1, max.attempts = max.attempts)
      })
  }

url <- "ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR105/056/SRR10503056/SRR10503056.fastq.gz" 
for (i in 1:100){
  safe.url(url)
}
 类似资料:
  • 基本上,我正在Python中的一个订阅计数器应用程序的“草案”上工作。我使用YouTube数据API从YouTube获取数据,然后循环这段代码以更新订阅者计数。但是由于我的GUI代码在循环之后,它永远不会开始,因为循环是无限的,永远不会结束。我尝试将GUI部分放在代码之前,以获得子计数,但没有定义任何变量,因此返回错误。所以基本上,我的问题是如何重新组织它,使其工作,子计数在GUI中更新。我听说过

  • 我正在sql plus中运行一个脚本,脚本中有一个for循环: 运行脚本时出现以下错误: ORA-06550:第6行第1列:PLS-00103:遇到符号“开始” 我哪里做错了?

  • 在使用for循环时,我试图在数组中只显示偶数(0-18)。 到目前为止,我已经显示了 我试着改变

  • 我们使用Assertj Swing3.9.2进行的gui单元测试偶尔会以难以重现的方式失败。有时整个测试套件是绿色的,有时一些测试用例失败。我们使用Ubuntu18.04LTS和GNOME两台不同的机器,我们得到了相同的错误。 抛出的异常有两个,并不时出现在不同的测试用例中: null null 此外,在不同的测试用例中,重复运行多次相同的测试可能会导致失败或成功。 特拉维斯-奇的测试也失败了。

  • 问题内容: 我有以下5个文件: gui.py functions.py 线程处理程序 variables.py 和start.py 执行start.py之后,我收到消息:“ QCoreApplication:exec:事件循环已在运行 ” 我发现,这与计时器有关 从 start.py 和功能 在 functions.py中 有人可以向我解释问题是什么吗?我不知道代码有什么问题… 问题答案: 我认为

  • 我需要12次外循环,每个外循环1次内循环 例如: 等 但现在我的内循环在第一次迭代的外循环上运行。 请帮助我如何使用for循环执行此操作。