You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用baseballr包从Baseball Savant下载数据时遭遇HTTP Error 504求助

解决baseballr::statcast_search HTTP 504超时错误

问题定位

HTTP 504是网关超时错误,结合你搬家后出现问题的场景,核心原因是新网络环境下请求超时/触发Baseball Savant的限流机制,大体积单请求(3万条数据)更容易触发这类问题。

可行修复方案

1. 拆分请求时间范围

将7天的请求拆分为单日请求,降低单次请求的数据量,同时添加延迟避免限流:

# 生成单日日期序列
date_range <- seq(as.Date("2022-09-13"), as.Date("2022-09-20"), by = "day")
data_list <- list()

# 循环获取每日数据
for (date in date_range) {
  daily_data <- statcast_search(
    start_date = date,
    end_date = date,
    player_type = "pitcher"
  )
  data_list[[as.character(date)]] <- daily_data
  Sys.sleep(2) # 添加2秒延迟,避免频繁请求触发限流
}

# 合并所有数据
final_dataset <- do.call(rbind, data_list)

2. 调整网络与超时设置

  • 测试当前网络访问Baseball Savant的速度,若延迟过高,尝试切换网络(如手机热点)排除运营商/防火墙限制
  • 全局延长请求超时时间(baseballr依赖httr包):
library(httr)
set_config(config(timeout = 60)) # 设置60秒超时,覆盖默认短超时

3. 更新baseballr包

检查并更新到最新版本,修复已知的请求问题:

update.packages("baseballr")

4. 验证接口可用性

先请求极小范围数据(如1天的投手数据),确认Baseball Savant接口本身正常:

test_data <- statcast_search(start_date = "2022-09-13", end_date = "2022-09-13", player_type = "pitcher")

注意事项

如果拆分请求后仍报错,可适当延长Sys.sleep()的时长(如5秒),避免短时间内发送过多请求触发Baseball Savant的限流策略。

内容的提问来源于stack exchange,提问作者stevoo_p13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 14:25:24