我试图在我的代码中连续调用多个设备的GET家庭/ householdId /收藏夹和家庭/ householdId /播放列表。该呼叫有时会工作,并正确返回响应。但是其他时候,对于完全相同的呼叫,我会得到一个500 Internal Server Error
。还有其他人看到过这种情况吗?
如果我尝试在邮递员中运行最初通过代码失败的完全相同的调用,则它可以正常工作。
答案 0 :(得分:0)
我查看了您提供的时间和familyId的日志。这些请求实际上受到速率的限制,但是在这种特殊情况下,没有将正确的HTTP响应代码返回给客户端。对于这种情况,我们将进行增强以改进HTTP响应代码。
要稍微扩展一下速率限制-集成提出的每个请求(例如GET组,GET播放列表,GET收藏夹)都会到达家庭中的某个设备,如果其中一些请求可能需要更长的处理时间,家庭拥有大量设备。每个设备只能一次处理一定数量的命令,因此,如果家庭(Sonos控制器,语音集成等)被积极使用,则某些请求可能会受到速率的限制。
在收到错误时重试是一个合理的实现,但是它并不能消除在大型活跃家庭中看到的间歇性错误。我的建议是,如果可能的话,尝试减少集成发送的请求数量。例如-您可以保存GET groups请求的结果并订阅groups命名空间。这样,您可以依靠接收组更改事件来保持更新,而不必如此频繁地向家庭发出GET组请求。
事件订阅概述:https://developer.sonos.com/build/direct-control/connect/
网上论坛订阅文档:https://developer.sonos.com/reference/control-api/groups/subscribe/