5

Próbuję napisać aplikację, która tworzy konta pocztowe dla tysięcy użytkowników za pomocą Google Directory API. Tworzenie ich jedna po drugiej działa, ale jest bardzo powolne. Próbowałem użyć żądań wsadowych, które powinny obsługiwać do 1000 żądań jednocześnie. Mimo to tylko około 50 użytkowników jest tworzonych pomyślnie, a pozostałe żądania powodują błędy 403. Jeśli zamiast tego zmienię rozmiar wsadu na 40, po pierwszym wsadzie wiele żądań zakończy się niepowodzeniem z błędami 5xx.Używanie Google Directory API do obsługi tysięcy użytkowników

Jeśli żądania partii są nadal ograniczone przez te same limity stawek, wydaje się, że są bezwartościowe, ponieważ mogłem po prostu wysyłać te żądania indywidualnie z tak małą szybkością. Czy jest lepszy sposób na zrobienie tego, czy jest coś innego, co powinienem zrobić?

+0

Czy Twoja aplikacja wykonuje wykładnicze wycofanie (https://developers.google.com/admin-sdk/directory/v1/limits), aby ponowić niepowodzenia operacji w ramach wsadu? https://developers.google.com/admin-sdk/directory/v1/limits –

Odpowiedz

2

Grupowanie żądań z pewnością uratuje obieg sieci (co może być dość kosztowne, jeśli tysiące użytkowników do przetworzenia). Jednak serwer nadal będzie musiał wykonać żądanie jeden po drugim, nawet jeśli jest w grupie. Spójrz na dokumentacji dotyczącej Admin SDK

https://developers.google.com/admin-sdk/directory/v1/guides/batch

Szczególna uwaga powiedział: „. Zestaw żądań n grupowane razem liczy się do limitu użytkowania jako żądań N, nie jako jeden wniosek Wniosek partia jest brane oprócz zestawu żądań przed przetworzeniem. "

+0

Nawet przy użyciu wykładniczego wycofywania, otrzymano wiele błędów przekroczenia limitu. Ponieważ interfejs API Directory może zezwalać na 10 kreacji na sekundę, mógłbym wysłać partię z 1000 kreacjami, odczekać 100 sekund i wysłać kolejną. Ale w pierwszej partii dnia otrzymuję błędy kwot. Zakończyłem ograniczanie partii do 12 kreacji: działa bez limitu Błędy przekroczone. –