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

使用Axios调用Spotify Web API时随机出现500错误排查

问题描述

我有一个包含约35个元素的歌曲数组,结构如下:

const songs = [
  {
    song_id: '09wkyp6dMAo5JakEj49R0M',
    artist_id: '5EmEZjq8eHEC6qFnT63Lza',
  },
  {
    song_id: '2GaEPiwjVhSMrhX0zC5zJL',
    artist_id: '5EmEZjq8eHEC6qFnT63Lza'
  }
]

我通过for循环遍历每首歌,执行以下异步逻辑:

const assignSongsToPlaylists = async () => {
  for (let s of songs) {
    // 从MongoDB获取groupID
    const { connectedGroupId } = await Artist.findOne({
      artistSpotifyId: s.artist_id,
    })
    // 根据groupID查找对应的播放列表ID
    const { connectedPlaylistId } = await Group.findOne({
      _id: connectedGroupId,
    })
    // 将歌曲添加到指定播放列表
    const response = await axios.post(
      `/playlists/${connectedPlaylistId}/tracks?uris=spotify%3Atrack%3A${s.song_id}`,
    )
  }
}

const response = await assignSongsToPlaylists()

当前问题:这个操作有时能成功将所有歌曲添加到Spotify的单个或多个播放列表,但有时会在处理若干首歌后(比如5首或25首)随机失败,返回Axios 500错误。请问这种随机出现500错误的行为可能由什么原因导致?

可能的原因分析
  • Spotify API隐性速率限制:Spotify API有明确的请求频次限制(返回429),但短时间内连续发起大量请求可能触发后端过载保护,返回非标准的500错误。即使是串行请求,35次连续POST也可能触碰到隐性的阈值。
  • MongoDB查询返回异常:如果某次Artist.findOne或Group.findOne未找到匹配数据,connectedGroupId或connectedPlaylistId会是undefined,导致生成无效的API请求URL,Spotify后端处理无效请求时返回500。这种情况的随机性取决于数组中是否存在无效的艺人数据。
  • Spotify后端瞬时故障:Spotify服务可能存在节点负载波动或临时故障,刚好在某次请求时触发,导致500错误,属于偶发的服务端问题。
  • 请求参数异常:极少数情况下,部分song_id可能存在格式问题,或者URI编码出现错误,导致请求参数不符合Spotify的解析要求,后端处理失败返回500。
  • 网络瞬时波动:客户端与Spotify服务器之间的网络出现中断、丢包等瞬时问题,导致请求不完整,后端无法正常处理返回500。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:06:29