使用Sys.sleep()延迟API调用

问题描述 投票:1回答:1

我正在使用R向天气数据提供者进行API调用,以下载一些天气预报。我正在使用一个免费键,该键每分钟最多可以拨打10个电话。我尝试使用Sys.sleep()来确保不超过阈值,但是API资源监视器告诉我我已经超过了调用次数。

例如,如果我打了6次电话,两次电话之间的间隔应该为10秒(不考虑R所需的时间)。

dat <- list()
for(i in 1:6){
  dat[[i]] <- getWeatherData(web_url, api_key, history_date, data_format)
  Sys.sleep(10)
  web_url <- gsub(i-1, i, url)
}

getWeatherData函数执行以下操作:

  1. 进行API调用(每次调用该函数仅进行一次API调用。使用httr::GET()获取数据,],
  2. 解析XML输出以获得所需的变量(正则表达式),
  3. 执行一些清理(针对丢失/垃圾值),>
  4. 将字符串转换为R个日期时间对象(POSIXct,和
  5. 将值四舍五入至最接近的小时数(lubridate::round_date())。
  6. 功能输入:

  1. web_url是自定义网址,
  2. api_key是我的个人密钥,
  3. history_date是字符串(格式为"%d/%m/%Y %H:%M:%S"),并且
  4. data_format指定我是否要输出.XML或.json文件。
  5. 出于明显的原因,我无法共享url /密钥。运行此命令后,我会从数据提供商处收到一条通知,通知我我已超出每分钟允许的通话次数(10)。我每次都不会收到通知-不知道为什么会这样。

感谢您的帮助!

我正在使用R向天气数据提供者进行API调用,以下载一些天气预报。我正在使用一个免费键,该键每分钟最多可以拨打10个电话。我尝试使用Sys.sleep()...

r weather-api delayed-execution
1个回答
0
投票

如果Sys.sleep无法解决问题,此解决方案将对您有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.