You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google People API创建联系人遇QUOTA_EXCEEDED/FBS配额超限求助

排查Google People API创建联系人时的QUOTA_EXCEEDED(FBS配额超限)问题

你之前靠Google People API正常创建联系人,现在突然碰上个HttpError 429,提示FBS quota limit exceeded,但查询联系人完全没问题,而且你提到之前已经建了26888个联系人,当初是通过文档快速启动创建的项目,现在在控制台找不到它。结合这些细节,咱们一步步拆解问题:

一、先搞懂FBS配额到底是什么

FBS配额不是API调用次数的限制,而是Google Contacts的总存储配额——你已经建了近2.7万个联系人,这个量级大概率触达了个人Google账号的联系人存储上限。虽然官方没公开具体数值,但不少用户反馈当联系人数量逼近2-3万时,就会触发这类存储配额限制,刚好和你现在的情况匹配:查询不需要新增存储所以正常,创建要写入存储就直接触发限制。

二、怎么确认是不是存储配额满了

你说项目不在控制台?其实通过快速启动生成的项目肯定存在,只是你没找对地方:

  • 打开Google Cloud控制台,点左上角的项目选择器,翻一遍所有关联你账号的项目,大概率能找到名字类似Quickstart-xxx的项目(就是当初快速启动自动创建的那个)
  • 进入项目后,去IAM与管理 > 配额页面,搜索People API相关配额,重点找和「Total contacts」相关的存储配额;要是找不到,直接去Google Contacts网页版手动加个联系人试试——如果手动都加不了,那百分百是存储配额满了

三、具体解决方案

1. 清理冗余联系人腾空间

如果是存储配额满了,最直接的办法就是清理没用的联系人:

  • 打开Google Contacts网页版,用「查找重复项」功能批量合并或删掉重复的联系人
  • 先导出要保留的联系人做备份,再批量删除老旧、无效的条目,腾出存储空间

2. 确认API调用频率(辅助排查)

你的调用频率是每3秒1个,每天最多200个,远低于People API默认的调用配额(每分钟100次,每天10万次),所以基本可以排除调用次数超限的问题。不过要是放心不下,可以去Cloud控制台的API与服务 > 仪表盘看一下People API的调用统计,确认有没有异常峰值。

3. 再核对下授权范围

你说已经改了授权范围,但还是再确认下:创建联系人需要的是https://www.googleapis.com/auth/contacts这个写入权限,要是之前用的是只读范围,哪怕刷新凭证也没写入权限,但你之前能创建,所以这个可能性很低,不过还是核对下代码里的SCOPES变量更稳妥。

4. 迁移到Workspace账号(如果需要存大量联系人)

要是你的业务需要存超过3万的联系人,个人账号的配额肯定不够,建议迁移到Google Workspace(企业版)账号,Workspace的联系人存储配额更高,还支持更多批量操作。

四、给你的代码加个错误处理优化

虽然现在问题出在配额,但给代码加个错误处理能避免程序直接崩溃,还能更清晰地捕获问题:

def main():
    creds = None
    # 凭证加载逻辑保持不变...
    service = build('people', 'v1', credentials=creds)

    print('trying')
    for i in df_banco_linhas[:2]:
        if i[1] not in df_csv_linhas:
            time.sleep(3)
            try:
                service.people().createContact(
                    body={
                        "names": [{"givenName": i[0]}],
                        "phoneNumbers": [{'value': i[1]}]
                    }).execute()
                print('create: ' + i[0])
            except HttpError as err:
                if err.resp.status == 429:
                    print(f"配额超限,无法创建联系人{i[0]}: {err}")
                    # 这里可以加重试逻辑,或者直接终止循环
                    break
                else:
                    print(f"创建联系人{i[0]}失败: {err}")
            time.sleep(3)
        else:
            print('NO')

if __name__ == '__main__':
    main()

内容的提问来源于stack exchange,提问作者Leonardo Henriques

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 17:03:15