Rate Limits & Apex Restrictions

DEX455 - Reports API、Sites、Support Classes 与 Territory Management

📄 第 321 页 🎬 视频课程

课程章节介绍

同学们,咱们这节课来看一看Salesforce里关于报告API的一些限制,特别是同步报告运行的限制,这些记清楚了,可以避免你在开发时踩坑。 首先,什么是同步报告运行呢?就是你调用API去运行一份报告,然后立刻等着它出结果。这种方式很直接,但Salesforce为了保障平台的稳定性,给你设了一些“天花板”。 我们一条一条看。你的组织每小时最多能发起500次同步报告运行请求,这是一个硬性的配额,超过了就会报错。同时呢,这个API允许同时处理最多20个正在运行的同步报告请求,也就是说并发数不要超过20个。 当你调用完想查看有哪些同步运行的报告实例时,你一次最多能拉回2000个实例的列表。而如果你要获取这些运行的具体结果,这个API一次最多只允许你发200个请求去拿结果。还有一点,每个小时你同步请求的总数上限是1200次,注意这和前面的500次不矛盾,它指的是各种同步报告相关调用的总量。而且,运行出来的结果只在24小时的滚动期内可以拿到,过了时间就清掉了,这点也要留心。 这些是API层面的限制。但更要紧的是,在Apex代码里,有两条特殊限制,你必须刻在脑子里。第一,在批处理Apex中,不允许进行同步报告调用。为什么?因为批处理本来就是异步大量处理数据的,如果还在里面跑同步报告,会严重拖累性能,而且容易造成锁冲突。第二,在Apex触发器里,也同样不允许任何报告调用。触发器是在数据操作时立刻执行的,绝对不能再跑去运行报告,那样会大大增加事务的响应时间,甚至引发锁等待,所以Salesforce直接就一刀切禁止了。 简单来说,记住这几个数字:每小时500次运行、20个并发、列表2000个、获取结果200个请求、总请求1200次、结果保留24小时。再记住Apex里两个绝对禁区:批处理和触发器里不能调同步报告。把这些限制放在心里,你以后写代码就不会被这些墙撞得莫名其妙了。如果有什么没听懂的地方,可以随时问我。

关键词

Apex Salesforce Developer Guide