use*_*778 4 google-api go google-people-api google-api-go-client
我正在使用 Google 新 People API 制作应用程序原型。在测试过程中,我批量添加和删除了联系人,看看每分钟和每天总共可以添加多少个联系人。
我理解文档说每分钟可以添加多少个,但从我的测试来看,我似乎没有接近这个。即使在查看我的指标时,我的请求也远远超出了每分钟和每天的假定限制。
我的主要问题是,在我的 3 个 Gmail 帐户上的服务帐户上进行了几次尝试后,我现在回来了googleapi: Error 429: MY_CONTACTS_OVERFLOW_COUNT, rateLimitExceeded
。我在网上找不到任何提及MY_CONTACTS_OVERFLOW_COUNT
。我从错误中假设这意味着我有太多联系人,但是当运行删除脚本时,似乎我根本没有任何联系人。现在我的开发计算机上的所有 3 个帐户都返回此响应超过 24 小时,这让我相信我可能已被阻止并且不受速率限制?
用于运行测试的客户端代码:
package main
import (
"context"
"log"
"google.golang.org/api/people/v1"
"os"
"bufio"
"time"
//"github.com/davecgh/go-spew/spew"
)
func chunks(xs []string, chunkSize int) [][]string {
if len(xs) == 0 {
return nil
}
divided := make([][]string, (len(xs)+chunkSize-1)/chunkSize)
prev := 0
i := 0
till := len(xs) - chunkSize
for prev < till {
next := prev + chunkSize
divided[i] = xs[prev:next]
prev = next
i++
}
divided[i] = xs[prev:]
return divided
}
func main(){
ctx := context.Background()
srv, err := people.NewService(ctx)
if err != nil {
log.Fatalf("Unable to create people Client %v", err)
}
file, err := os.Open("test125k.txt")
if err != nil {
log.Fatalf("failed opening file: %s", err)
}
scanner := bufio.NewScanner(file)
scanner.Split(bufio.ScanLines)
var txtlines []string
for scanner.Scan() {
txtlines = append(txtlines, scanner.Text())
}
chunkEmails := chunks(txtlines,200)
count := 0
var validPeopleResources []string
log.Printf("Started")
for i,chunk := range chunkEmails{ //
var contacts people.BatchCreateContactsRequest
contacts.ReadMask = "emailAddresses,photos"
for _,chunkEmail := range chunk{
var contact people.ContactToCreate
var person people.Person
var personEmails people.EmailAddress
personEmails.Value = chunkEmail
var AllEmails = [](*people.EmailAddress){
&personEmails,
}
person.EmailAddresses = AllEmails
contact.ContactPerson = &person
contacts.Contacts = append(contacts.Contacts, &contact)
}
r,err := srv.People.BatchCreateContacts(&contacts).Do()
if err != nil {
log.Printf("Unable to create contacts")
log.Printf(err.Error())
log.Fatalf("")
}
var contactEmail string
var resource string
for _, validPeople := range r.CreatedPeople {
contactEmail = validPeople.Person.EmailAddresses[0].Value
resource = validPeople.Person.ResourceName
validPeopleResources = append(validPeopleResources,resource)
}
count = count + 1
if count == 2 {
var contactToDelete people.BatchDeleteContactsRequest
contactToDelete.ResourceNames = validPeopleResources
_,err = srv.People.BatchDeleteContacts(&contactToDelete).Do()
if err != nil {
log.Printf("Unable to delete contacts")
log.Printf(err.Error())
log.Fatalf("")
}
validPeopleResources = nil
count = 0
log.Printf("performed delete")
}
log.Printf("%d comlpeted",i)
time.Sleep(10 * time.Second)
}
}
Run Code Online (Sandbox Code Playgroud)
当您尝试向 Google 帐户插入新联系人,但他们的联系人数量已达到上限时,就会出现“MY_CONTACTS_OVERFLOW_COUNT”情况。
自 2011 年起,最大限制为 25,000:https://workspaceupdates.googleblog.com/2011/05/need-more-contacts-in-gmail-contacts.html
这里应该注意的是,谷歌在计算计数时也会考虑已删除的联系人。您可以在“联系人垃圾箱”中找到已删除的联系人。这些联系人将在 30 天后清除。
归档时间: |
|
查看次数: |
908 次 |
最近记录: |