调用Google Vision/Video Intelligence API偶发404错误如何上报处理?
Google Video Intelligence API偶发404问题处理方案
前置排查建议
首先先完成以下本地自检,排除非平台侧原因导致的报错:
- 确认API密钥权限、配额状态正常,不存在过期、未开通对应接口权限、短时间调用超限的情况
- 确认请求的音视频文件大小、格式符合接口要求,当前你使用base64编码传输文件的方式仅适用于10MB以内的小文件,大于10MB的文件建议上传到谷歌云存储后通过URI提交请求,避免大文件传输异常导致的伪404报错
- 优先给请求增加指数退避重试逻辑,这类偶发404大概率是API边缘节点临时负载波动导致的,针对标注类幂等请求,增加最多3次重试即可解决90%以上的偶发异常,你可以参考以下优化代码:
var videoApiUrl = 'https://videointelligence.googleapis.com/v1/'; var annotateUrl = videoApiUrl + 'videos:annotate?key=' + apiKey; var testFile = DriveApp.getFileById('11MIdGHM0tYZ5o0p5QebD8uPELYGTntzZ'); var testBlob = testFile.getBlob(); var testBase64Bytes = Utilities.base64Encode(testBlob.getBytes()); var JSON_REQ = XbuildJSONRequestVideoBase64(testBase64Bytes, 'PERSON_DETECTION'); var options = { 'method': 'post', 'contentType': 'application/json', 'muteHttpExceptions': true, 'payload': JSON_REQ }; // 新增指数退避重试逻辑 function retryRequest(maxRetries = 3) { for (let i = 0; i < maxRetries; i++) { let response = UrlFetchApp.fetch(annotateUrl, options); let code = response.getResponseCode(); if (code === 200) return JSON.parse(response.getContentText()); // 仅对404、5xx类服务端异常重试 if (code === 404 || code >= 500) { Utilities.sleep(1000 * Math.pow(2, i)); continue; } throw new Error(`请求失败,状态码:${code}`); } throw new Error(`重试${maxRetries}次后仍请求失败`); } var objName = retryRequest();
上报官方的标准与方式
符合上报要求的场景
完成自检和重试优化后,仍满足以下任一条件,可上报给谷歌官方评估修复:
- 重试后404错误的请求占比仍高于1%
- 同一请求可稳定复现固定概率的404报错,排除本地网络、权限、文件问题
- 报错集中在特定时间段、特定区域出现,且对应时间无本地网络波动记录
具体上报路径
- 登录谷歌云控制台,进入对应项目的支持页面,根据你当前的订阅等级提交问题工单,提交时需要携带完整的请求ID、报错时间戳、复现步骤、最小可复现代码
- 也可以在谷歌云公共Issue Tracker中提交对应产品的问题报告,分类选择Video Intelligence API,同步相关复现信息即可
官方常规处理规则
- 如果确认是平台侧普适性bug,官方会安排修复并同步进度
- 如果是偶发的边缘节点波动、非平台侧原因导致的问题,官方会建议通过重试、优化请求参数的方式自行处理,不会单独跟进修复
内容的提问来源于stack exchange,提问作者Tom Scheifler
相关产品推荐
相关产品推荐

