最近,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://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/api-limits#what-should-i-do-if-my-application-exceeds-the-limit

https://www.kingswaysoft.com/blog/2018/02/27/How-to-Cope-with-the-new-Dynamics-365-API-Limits

Dynamics 365 Online-60000 API Limits的更多相关文章

  1. Dynamics 365利用Web API对视图进行查询

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  2. 使用Dynamics 365 CE Web API查询数据加点料及选项集字段常用查询

    微软动态CRM专家罗勇 ,回复336或者20190516可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me. 紧接上文:配置Postman通过OAuth 2 implicit ...

  3. Dynamics 365 Web Api之基于single-valued navigation property的filter查询

    本篇要讲的是dynamics 新版本中web api的一个改进功能,虽然改进的很有限,但至少是改进了. 举个例子,我们现在知道联系人的名字vic,我们想找出客户记录中主要联系人名字为vic的所有客户, ...

  4. Dynamics 365 CRM 开发架构简介

    Dynamics 365 CRM提供了多种编程模型,你可以灵活地按需选用最佳模式. 本文是对Dynamics 365 CRM编程模型的综述. 概览 下图表明了Dynamics 365 CRM的主要可编 ...

  5. 不借助工具在浏览器中通过Web API执行Dynamics 365操作(Action)实例

    摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复262或者20170727可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyon ...

  6. 利用Fiddler修改请求信息通过Web API执行Dynamics 365操作(Action)实例

    本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复261或者20170724可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me ...

  7. Dynamics 365 Customer Engagement 中对API的调整内容分享

    当前版本中弃用了以下客户端 API 以重新组织 Xrm 客户端 API 对象模型,从而更好地满足以下需求:使用同一客户端脚本而不必基于上下文或基于运行这些脚本的客户端(Web 客户端或新的统一接口)来 ...

  8. Dynamics 365中的Client API form context (formContext)

    适用于Dynamics 365 for Customer Engagement apps 9.x版本. 本文是一篇翻译,原文来源是微软官方文档. 本文链接:https://www.cnblogs.co ...

  9. 通过C#代码调用Dynamics 365 Web API执行批量操作

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

随机推荐

  1. 【视频编解码·学习笔记】7. 熵编码算法:基础知识 & 哈夫曼编码

    一.熵编码概念: 熵越大越混乱 信息学中的熵: 用于度量消息的平均信息量,和信息的不确定性 越是随机的.前后不相关的信息,其熵越高 信源编码定理: 说明了香农熵越信源符号概率之间的关系 信息的熵为信源 ...

  2. 正负样本比率失衡SMOTE

    正负样本比率失衡SMOTE [TOC] 背景 这几天测试天池的优惠券预测数据在dnn上面会不会比集成树有较好的效果,但是正负样本差距太大,而处理这种情况的一般有欠抽样和过抽样,这里主要讲过抽样,过抽样 ...

  3. LeetCode - 657. Judge Route Circle

    Initially, there is a Robot at position (0, 0). Given a sequence of its moves, judge if this robot m ...

  4. 新闻热词:从爬虫到react native应用

    背景 由于只想了解当天新增的top热词,减少过多信息干扰,打算做一款app实现这个功能. 架构: 热词抓取 -> mysql <=> nodejs <=> nginx & ...

  5. [Python Study Notes]WdSaveFormat 枚举

    WdSaveFormat 枚举 指定要在保存文档时使用的格式. 版本信息 已添加版本: 名称 值 说明 wdFormatDocument 0 Microsoft Word 格式. wdFormatDO ...

  6. 时间序列数据库rrd启动

    然后执行启动定时任务目录:etc/crontab SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/ # For de ...

  7. java生产者与消费者模式

    前言: 生产者和消费者模式是我们在学习多线程中很经典的一个模式,它主要分为生产者和消费者,分别是两个线程, 目录 一:生产者和消费者模式简介 二:生产者和消费者模式的实现 声明:本例来源于java经典 ...

  8. 原码,反码,补码 与(&) 或(|) 非(~) 异或(^) 左移 << 右移 >> 无符号右移 >>>

    原码 数字在计算机中以二进制表示,8位的字长,最高位是符号位, 正数为0,负数为1.比如,3为0000 0011: -3为1000 0011. 注意,Java中int为32位.3的16进制表示为3,- ...

  9. 【Unity3D技术文档翻译】第1.4篇 AssetBundle 依赖关系

    上一章:[Unity3D技术文档翻译]第1.3篇 创建 AssetBundles 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced Develo ...

  10. 二、Item Pipeline和Spider-----基于scrapy取校花网的信息

    Item Pipeline 当Item在Spider中被收集之后,它将会被传递到Item Pipeline,这些Item Pipeline组件按定义的顺序处理Item. 每个Item Pipeline ...