限制和配额可保护 Google 基础架构免受以不当方式使用 Directory API 的自动流程所造成的影响。API 请求过多可能是由于无害的拼写错误所致,也可能是由于低效系统对您的 API 进行不必要的调用所致。无论是何种原因,您都应在来自特定来源的流量达到某一级别时阻止该流量,这是保证 Google Workspace 系统总体运行良好所必需的。这一设置可确保一个开发者的行为所造成的负面影响不会波及更大范围的开发者群体。
在极少数情况下,您的 API 请求会失败,此时 API 会返回一个 HTTP 状态代码及错误原因。此外,响应正文还将详细说明出错的原因。
下表列出了因达到配额限制而导致的错误可能出现的错误代码、原因、相应说明和建议采取的操作。
代码 | 原因 | 说明 | 建议采取的措施 |
---|---|---|---|
403 | userRateLimitExceeded | 表示超出了用户速率限制。Google Cloud 控制台中设置的默认值为每位用户每分钟 2,400 次查询(每个 Google Cloud 项目)。 | 在 Google Cloud 项目的 Admin SDK API 配额页面中提高每位用户限制,或使用指数退避算法降低您发送请求的速率。 |
403 | quotaExceeded | 表示某项操作的并发请求数已达到上限。 | 使用指数退避算法重试。您需要降低发送请求的速率。 |
429 | rateLimitExceeded | 表示某项操作的并发请求数已达到上限。 | 使用指数退避算法重试。您必须降低发送请求的速率。 此限制适用于每个 Google Workspace 账号,而不是每个 API 客户端或每个用户。 此限制无法提高。 |
实现指数退避
指数退避是指客户端按照不断增加的时间间隔定期重试失败的请求的过程。这是网络应用的标准错误处理策略。使用指数退避还能提高带宽使用效率、减少获得成功响应所需的请求数,并最大程度地提高并发环境中的请求吞吐量。
实现简单指数退避的流程如下。
- 向 API 发出请求
- 接收错误响应,其中包含一个可重试的错误代码
- 等待 1 秒 +
random_number_milliseconds
秒 - 重试请求
- 接收错误响应,其中包含一个可重试的错误代码
- 等待 2 秒 +
random_number_milliseconds
秒 - 重试请求
- 接收错误响应,其中包含一个可重试的错误代码
- 等待 4 秒 +
random_number_milliseconds
秒 - 重试请求
- 接收错误响应,其中包含一个可重试的错误代码
- 等待 8 秒 +
random_number_milliseconds
秒 - 重试请求
- 接收错误响应,其中包含一个可重试的错误代码
- 等待 16 秒 +
random_number_milliseconds
秒 - 重试请求
- 如果错误仍然出现,则停止重试并记录错误。
在上述流程中,random_number_milliseconds
是一个小于或等于 1000 的随机毫秒数。必须这样做才能在一些并行实现中避免某些锁定错误。random_number_milliseconds
必须在每次等待后重新定义。
注意:等待时间始终是 (2 ^ n) 秒 + random_number_milliseconds
毫秒,其中 n 是单调递增的整数,初始值为 0。n 会在每次迭代(每次请求)后递增 1。
该算法设置为 n 为 5 时终止。设置这个上限只是为了防止客户端无限重试,以便在大约总共 32 秒的延迟后,将请求认定为“不可恢复的错误”。如有需要,您的 API 客户端可以实现更多尝试次数。
API 限制和配额
API 限制类别 | 限制 |
---|---|
创建用户 | 您每秒只能使用 Directory API 为每个网域创建 10 名用户。 |
将群组添加为另一个群组的成员 | 下级群组的成员最长可能需要 10 分钟才能显示为上级群组的成员。此限制可能会因系统容量而异。 |
移动设备 |
使用 Directory API,您最多可以执行以下操作:
|
重命名用户 | 最长可能需要 10 分钟才能传播到所有服务。在重命名用户之前,建议先让用户退出所有浏览器会话和服务。如需了解详情,请参阅更新用户。 |
创建/更新组织部门 |
|
API 配额类别 | 配额 |
Chrome 设备 annotatedLocation ,字符数上限
|
设备位置信息的字符数上限为 200 个字符。 |
Chrome 设备 notes ,字符数上限
|
设备备注信息的字符数上限为 500 个。 |
Chrome 设备,最多 user 个字符
|
设备用户的名称不得超过 100 个字符。 |
网域别名(上限) | 域名别名数量上限为 20 个。 |
组、说明 | 说明中的字符数上限为 4,096 个。 |
每个账号的群组数量 | 如果您使用的是 G Suite 免费版(旧版)账号,则群组数量限制为 10 个。其他版本的群组数量没有限制。 |
群组数、每个群组的成员数 | 如果您使用的是 G Suite 免费版(旧版)账号,则一个群组最多可包含 100 名成员。其他版本的群组成员数量没有限制。 如需了解每位用户的群组成员资格限制,请参阅了解群组的政策和限制 |
maxResults 查询字符串 | API 会返回:
|
多个网域,一个账号中允许的网域数量上限 | 600 个(1 个主域名 + 599 个其他域名) |
组织部门,一次可迁移的用户数量上限 | 一次最多可迁移 20 位用户。并且,用户的主电子邮件地址必须已存在于该账号中。 |
用户别名 | 每个用户账号允许的别名总数为 30 个。 |
使用已删除的别名的用户别名 | 已删除的用户别名可以立即重新使用。 |
其他类型的限制 | 限制和指南 |
---|---|
结算和创建用户 | 对于采用 Google Workspace 弹性方案的用户,使用此 API 创建用户将产生经济影响,并会导致您的客户结算账号产生扣款。例如,如果您使用的是 Google Workspace 弹性方案,那么创建 10 位用户将会导致系统向您的账号收取 10 个 Google Workspace 许可的费用,并按创建完成时间按比例计算。如果您采用的是包年套餐,则表示您已承诺预先支付一定数量的许可费用,并且只能创建您承诺的用户数量。如需详细了解结算方案和结算账号,请访问管理帮助中心。 |
姓氏和名字 | 名字和姓氏不得超过 40 个字符。支持 Unicode/UTF-8 字符,并且可以包含空格、字母 (a-z)、数字 (0-9)、短划线 (-)、正斜线 (/) 和句点 (.)。如需详细了解字符使用规则,请参阅管理帮助中心。 |
群组,删除 | 删除群组不会删除群组成员的用户账号。 |
群组和群组成员的电子邮件地址更改 | 在此版本的 API 中,您可以在启用 Google Workspace 服务之前更改群组的电子邮件地址。您可以使用管理控制台更改群组成员的电子邮件地址。更改后,API 会自动反映电子邮件地址更改。 |
群组、设置 | 您可以使用管理控制台管理群组访问权限设置、共享选项、监控和讨论归档。如需详细了解群组设置,请访问管理帮助中心。 |
群组、发送消息 | 为防范垃圾邮件和电子邮件滥用行为,Google 会限制您一次可以向外部收件人发送的邮件数量。如果您向群组发送邮件,系统会将每位外部成员都计为一位收件人。如需了解详情,请参阅电子邮件发信上限和防止发送给 Gmail 用户的邮件遭到屏蔽或被列为垃圾邮件 。 |
群组,发送 NDR 邮件 | 您不能将无法递送回执(NDR,也称为“退回邮件”)发送或转发至群组。 |
用户创建的群组,限制 | 如需了解用户创建的群组的限制,请参阅管理帮助中心 |
组织部门,开启/关闭服务 | 您可以使用管理控制台管理为组织部门启用和停用服务。 |
密码 | 可以包含字符的任意组合。必须至少包含 8 个字符。长度上限为 100 个字符。 |
相册 | 在此版本的 API 中,照片是用户的最新 Google 个人资料照片。 |
用户名 | 用户名可以包含字母 (a-z)、数字 (0-9)、短划线 (-)、下划线 (_),Google Workspace 支持识别英文句点 (.)。这与 Gmail 不同。用户名不得包含等号 (=)、尖括号 (<,>) 或连续多个点 (.)。如需了解详情,请访问管理帮助中心。 |
用户名、重命名 | 重命名后,Google Hangouts 会舍弃所有已记住的聊天邀请。用户必须再次请求权限才能与好友聊天。旧用户名会保留为电子邮件别名,以确保在电子邮件转发设置的情况下能继续收发邮件,但无法用作新用户名。如需详细了解重命名用户的影响,请访问管理帮助中心。重命名后,请使用删除用户的别名操作移除电子邮件别名。 |
多个网域中的用户 | Google Workspace 账号可以包含您的任何网域。在多网域账号中,一个网域中的用户可以与其他账号网域中的用户共享服务。多个网域组件包括:
|
警告、群组成员 | GROUP_CANNOT_CONTAIN_CYCLE - 该 API 不允许群组成员资格存在循环。例如,如果 group1 是 group2 的成员,则 group2 不能是 group1 的成员。 |