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

Google Places Autocomplete接口偶发UNKNOWN_ERROR(500)求助

针对Google Places Autocomplete接口偶发UNKNOWN_ERROR的排查方案

可能原因与解决措施:

  • 服务端瞬时故障:Google服务节点偶尔会出现过载或内部异常,这类问题属于平台侧的临时波动,重试是最有效的应对方式。建议实现指数退避重试策略,例如首次重试等待1秒,后续每次翻倍,最多重试3-5次,避免短时间高频请求加剧问题。
  • Session Token异常:尽管使用了唯一的sessiontoken,仍不排除服务端对该token的临时状态处理异常。重试时可生成新的sessiontoken替代原token,降低重复触发错误的概率。
  • 参数组合兼容性问题:
    • 当前location为香港坐标,但输入是日文地点“東京灣伊”,跨区域查询可能触发服务端内部逻辑偶发异常。可尝试移除location参数,或替换为东京附近坐标(如35.6895,139.6917)测试。
    • language设为zh-TW结合日文输入,多语言处理逻辑可能存在偶发兼容问题,可尝试切换为ja或zh-CN对比验证。
  • 网络传输波动:网络不稳定可能导致请求不完整或响应损坏。建议为请求添加超时设置,超时后自动重试;同时排查客户端网络环境,确认是否存在代理、防火墙干扰。

示例重试逻辑(JavaScript)

async function fetchAutocomplete(input, retries = 3, delay = 1000) {
  // 重试时生成新的sessiontoken
  const params = new URLSearchParams({
    input: input,
    key: "XXXXXX",
    sessiontoken: crypto.randomUUID(),
    location: "35.6895,139.6917",
    language: "zh-TW"
  });

  try {
    const response = await fetch(`https://maps.googleapis.com/maps/api/place/autocomplete/json?${params}`);
    const data = await response.json();

    if (data.status === "UNKNOWN_ERROR" && retries > 0) {
      await new Promise(resolve => setTimeout(resolve, delay));
      return fetchAutocomplete(input, retries - 1, delay * 2);
    }

    return data;
  } catch (err) {
    if (retries > 0) {
      await new Promise(resolve => setTimeout(resolve, delay));
      return fetchAutocomplete(input, retries - 1, delay * 2);
    }
    throw err;
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:55:18