Dynamics 365 Online-60000 API Limits
最近,Dynamics 365官方文档有最新的发布,就是从2018.3.19开始,会对API请求的数目有个限制:在连续的5分钟里,一个连接用户,针对一个CRM Organization,API请求数不能超过60000。因为还没有正式实行,所以我们先从文档上来理解这个限制。
一. 理解API Limitation
虽然“在连续的5分钟里,一个连接用户,针对一个CRM Organization,API请求数不能超过60000”这个描述说的很简单易懂,但是我们还是需要更加深入地了解下到底是怎样的情况。接下来,我们以“什么人在什么时间做了什么”为模板来拆分理解这个限制。
1. 什么人
一个连接用户。
限制针对所有的授权账户(Licensed User),所以目前来看不会有特殊账户跳出这个限制,限制起效果的对象是每个连接账户(Connection User);
涉及到的Dynamics 365版本:Online V8.x和Online V9.x
2. 什么时间
连续的5分钟里。
这个时间是从账号连接上就开始计算,然后不停的在统计API请求
3. 做了什么
API请求不得超过60000。
API请求不单单是.Net代码后台请求,还包括Form JavaScript请求;
60000/300s=200/s,也就是说在限制的时间段里,每秒的请求不超过200;
Multiple API Request只算一次请求,例如.Net Assembly中的ExecuteMultipleRequest,ExecuteTransactionRequest;Web API $batch
4. 如果超过限制呢?
首先,如果超过限制,之后的API请求会有怎样呢?
.Net assemblies会抛出异常,Error Code是-2147015902,异常信息Number of requests exceeded the limit of 60000, measured over time window of 300 seconds;
Http请求会在Response中返回StatusCode:429,Message:Number of requests exceeded the limit of 60000, measured over time window of 300 seconds.
其次,如果超过限制,是不是就不能发请求了?
在一定时间内,要停止发API请求的操作,需要等Request Volumn降到限制数之下以后,才可以继续发送。Request Volumn降到限制数之下的时间不是很明确,可以考虑等5分钟之后再发请求,但最终还得看实际情况。
二.限制的影响及目前的解决方案
从理解上看,如果想超过限制,那么在连续的5分钟里,一个用户需要每秒发200次API请求。考虑网络等因素,Dynamics 365的日常使用是完全不受影响的,可能波及的情况是在某个时间段里,需要集成同步大量的数据,这个时候,就会有大量的API请求。如果真的遇到这样的情况,应该怎么办呢?
1. 如果情况不是很紧急或者很严重,可以等后续的更新。在3.19之后的一周到两周里,可能会有后续相关的更新
2. 考虑减少并行的线程来减少请求数
3. 考虑提高一次请求的执行数量,变相的减少请求数,但是这时还需要考虑Service超时情况
4. 考虑增加执行账户的个数。因为限制是针对每个连接账号的,所以可以增加多个连接账户来分摊60000的限制
以上对官方资料的一个总结,具体的英文参考资料:
https://www.kingswaysoft.com/blog/2018/02/27/How-to-Cope-with-the-new-Dynamics-365-API-Limits
Dynamics 365 Online-60000 API Limits的更多相关文章
- Dynamics 365利用Web API对视图进行查询
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- 使用Dynamics 365 CE Web API查询数据加点料及选项集字段常用查询
微软动态CRM专家罗勇 ,回复336或者20190516可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me. 紧接上文:配置Postman通过OAuth 2 implicit ...
- Dynamics 365 Web Api之基于single-valued navigation property的filter查询
本篇要讲的是dynamics 新版本中web api的一个改进功能,虽然改进的很有限,但至少是改进了. 举个例子,我们现在知道联系人的名字vic,我们想找出客户记录中主要联系人名字为vic的所有客户, ...
- Dynamics 365 CRM 开发架构简介
Dynamics 365 CRM提供了多种编程模型,你可以灵活地按需选用最佳模式. 本文是对Dynamics 365 CRM编程模型的综述. 概览 下图表明了Dynamics 365 CRM的主要可编 ...
- 不借助工具在浏览器中通过Web API执行Dynamics 365操作(Action)实例
摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复262或者20170727可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyon ...
- 利用Fiddler修改请求信息通过Web API执行Dynamics 365操作(Action)实例
本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复261或者20170724可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me ...
- Dynamics 365 Customer Engagement 中对API的调整内容分享
当前版本中弃用了以下客户端 API 以重新组织 Xrm 客户端 API 对象模型,从而更好地满足以下需求:使用同一客户端脚本而不必基于上下文或基于运行这些脚本的客户端(Web 客户端或新的统一接口)来 ...
- Dynamics 365中的Client API form context (formContext)
适用于Dynamics 365 for Customer Engagement apps 9.x版本. 本文是一篇翻译,原文来源是微软官方文档. 本文链接:https://www.cnblogs.co ...
- 通过C#代码调用Dynamics 365 Web API执行批量操作
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
随机推荐
- POJ 2154 Color [Polya 数论]
和上题一样,只考虑旋转等价,只不过颜色和珠子$1e9$ 一样的式子 $\sum\limits_{i=1}^n m^{gcd(i,n)}$ 然后按$gcd$分类,枚举$n$的约数 如果这个也化不出来我莫 ...
- SPOJ Highways [矩阵树定理]
裸题 注意: 1.消元时判断系数为0,退出 2.最后乘ans要用double.... #include <iostream> #include <cstdio> #includ ...
- gradle一个已删除的项目找不到
排查了已有模块未果,到.idea目录中找到了gradle.xml文件,发现其中externalProjectPath指向的正是报错的那个已删除项目,改之,刷gradle,解决.
- springIOC、AOP的一些注解
springIOC.AOP的一些注解(使用这些注解之前要导入spring框架的一些依赖): 1.注入IOC容器 @Compontent:使用注解的方式添加到ioc容器需要在配置文件 ...
- IOS开发之记录用户登陆状态,ios开发用户登陆
IOS开发之记录用户登陆状态,ios开发用户登陆 上一篇博客中提到了用CoreData来进行数据的持久化,CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreDa ...
- Docker命令行安装Shipyard
1.下载自动部署Shell脚本 curl -sSL https://shipyard-project.com/deploy | bash -s 自动部署脚本中, 包括以下参数: ACTION: 表示可 ...
- (转)CocoaPods:管理Objective-c 程序中各种第三方开源库关联
在我们的iOS程序中,经常会用到多个第三方的开源库,通常做法是去下载最新版本的开源库,然后拖拽到工程中. 但是,第三方开源库的数量一旦比较多,版本的管理就非常的麻烦.有没有什么办法可以简化对第三方库的 ...
- PHP实现WebService的简单示例和实现步骤
首先我创建的文件有: api.php api的接口类文件 api.wsdl 我创建产生的最后要调用的接口文件 cometrue.php 注册service api类内容的所有内容的执行文件 creat ...
- Java经典编程题50道之三十一
将一个数组逆序输出. public class Example31 { public static void main(String[] args) { int[] a = { 9 ...
- Spring 依赖注入的理解
首先: 1.依赖注入就是一种在一个需要使用它的类中定义一个接口,该类中不管这个接口是怎么实现的,只是执行这个方法 2.依赖注入可以让该类实现通用 代码: 1.定义一个饮料接口 package cn.l ...