使用腾讯移动分析统计API将近三年了,最近因为申请的账号数量猛增,调用用户画像相关的接口时报90004错误。笔者在官方文档中并未找到相关解释,于是做实验尝试解决这个问题。
注: 几个月前mta的接口从http升级到了https,http方式的请求已经无效。
接口地址为:
https://mta.qq.com/h5/api/ctr_user_portrait
报错信息如下:
{"code":90004,"info":"api request num out of limit","data":[]}
从报错信息的info来看,可能是触发了API调用次数限制,刚开始是猜测每天限制多少次。但是很快就发现不是的,每过几分钟时间接口又可以正常返回。
进而猜测腾讯服务端对单一IP地址的请求作了限流处理,于是进行了连续2000次的接口调用测试,一旦返回90004则休眠1分钟后继续。
测试结果:平均请求200多次会触发一次90004,休眠1分钟后能够继续返回0(成功)。如果休眠时间设置更短,比如20s,则很有可能会连续休眠2-3次之后才能继续。
笔者的最终解决方案:
1 优化调用代码,针对同一个AppId避免重复调用接口,减少无效调用的次数。
2 针对返回码90004作处理,一旦返回90004则Thread.sleep(60*1000)
,即休眠60秒后重新发起请求。