上个月Teams团队发布了对Teams app/bot调用api的频率的限制。这也从侧面说明Teams app越来越多,Teams团队需要优先保证Teams本身的计算资源,来提供流畅的用户体验。
具体的每个限制指标在这里: https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/bots/rate-limit
我解释一下目前的做法,teams app需要注意的地方,以及一些容易混淆的概念:
-
Teams会对大家的api服务返回HTTP 429错误,可能大家之前很少遇到这个status code。429是Too Many Requests,就是请求数太多。服务器无法处理。当达到一些限制条件后,teams就会返回这个code
-
大家的api服务当遇到这个429时不要惊慌,这个是很平常的预料中的错误,需要做的是稍微等待一会儿,然后再次发送相同的请求给到Teams,如果你的api服务中已经有了retry机制,那就比较简单。如果没有,可以使用这段代码来重试。
public class MyRetryStrategy : ITransientErrorDetectionStrategy
{
public bool IsTransient(Exception ex)
{
var httpOperationException = ex as HttpOperationException;
if (httpOperationException != null)
{
return httpOperationException.Response != null && (int)httpOperationException.Response.StatusCode == 429);
}
return false;
}
}
var exponentialBackoffRetryStrategy = new<