Debido a que la API de Google Chat es un servicio compartido, aplicamos cuotas y limitaciones para asegurarnos de que todos los usuarios la usen de forma justa y proteger el rendimiento general de Google Workspace.
Si superas una cuota, recibirás una respuesta de código de estado HTTP 429: Too many requests
. Las verificaciones adicionales del límite de frecuencia en el backend de Chat también pueden generar la misma respuesta de error. Si se produce este error, debes usar un algoritmo de tiempo de espera exponencial y volver a intentarlo más tarde. Siempre que no superes las cuotas por minuto que se indican en las siguientes tablas, no hay límite para la cantidad de solicitudes que puedes realizar por día.
Se aplican dos tipos de cuotas a los métodos de la API de Chat: las cuotas por espacio y por proyecto.
Cuotas por espacio
Las cuotas por espacio limitan la frecuencia de las consultas en un espacio determinado y se comparten entre todas las apps de Chat que actúan en ese espacio y llaman a los métodos de la API de Chat enumerados para cada cuota.
En la siguiente tabla, se detallan los límites de consulta por espacio:
Cuota por espacio |
Métodos de la API de Chat |
Límite (por 60 segundos, compartido |
---|---|---|
Operaciones de lectura por minuto |
|
900 |
Operaciones de escritura por minuto |
|
60 |
Cuotas por proyecto
Las cuotas por proyecto limitan la frecuencia de las consultas de un proyecto de Google Cloud y, por lo tanto, se aplican a una sola app de Chat que llama a los métodos de la API de Chat especificados para cada cuota.
En la siguiente tabla, se detallan los límites de consultas por proyecto. También puedes encontrar estos límites en la página Cuotas.
Cuota por proyecto |
Métodos de la API de Chat |
Límite (por 60 segundos) |
---|---|---|
Escrituras de mensajes por minuto |
|
3000 |
Operaciones de lectura de mensajes por minuto |
|
3000 |
Operaciones de escritura de membresía por minuto |
|
300 |
Operaciones de lectura de membresías por minuto |
|
3000 |
Operaciones de escritura de espacio por minuto |
|
60 |
Operaciones de lectura de espacio por minuto |
|
3000 |
Operaciones de escritura de archivos adjuntos por minuto |
|
600 |
Operaciones de lectura de archivos adjuntos por minuto |
|
3000 |
Operaciones de escritura de reacciones por minuto |
|
600 |
Operaciones de lectura de reacciones por minuto |
|
3000 |
Límites de uso adicionales
Existen límites de cuota adicionales para crear espacios de tipo GROUP_CHAT
o SPACE
(con el método spaces.create
o spaces.setup
).
Crea menos de 35 espacios por minuto y 800 por hora de estos tipos. Los espacios de tipo DIRECT_MESSAGE
no están sujetos a estos límites de cuota adicionales.
El tráfico alto de la API segmentado para el mismo espacio puede activar límites internos adicionales que no son visibles en la página Cuotas.
Resuelve errores de cuotas basadas en el tiempo
Para todos los errores basados en el tiempo (un máximo de N solicitudes cada X minutos), te recomendamos que tu código detecte la excepción y use una retirada exponencial truncada para asegurarte de que los dispositivos no generen una carga excesiva.
La retirada exponencial es una estrategia estándar de manejo de errores para aplicaciones de red. Un algoritmo de retirada exponencial vuelve a intentar las solicitudes a través del aumento exponencial de los tiempos de espera entre solicitudes, hasta un tiempo de retirada máximo. Si las solicitudes aún no tienen éxito, es importante que las demoras entre las solicitudes aumenten hasta que estas se completen correctamente.
Algoritmo de ejemplo
Un algoritmo de retirada exponencial vuelve a intentar las solicitudes de forma exponencial, lo que aumenta el tiempo de espera entre los reintentos hasta un tiempo de retirada máximo. Por ejemplo:
- Realiza una solicitud a la API de Google Chat.
- Si la solicitud falla, espera 1 +
random_number_milliseconds
y vuelve a intentar la solicitud. - Si la solicitud falla, espera 2 +
random_number_milliseconds
y vuelve a intentar la solicitud. - Si la solicitud falla, espera 4 +
random_number_milliseconds
y vuelve a intentar la solicitud. - Y así sucesivamente, hasta un tiempo de
maximum_backoff
. - Continúa con la espera y los reintentos hasta un número máximo de reintentos, pero no aumentes el período de espera entre los reintentos.
Donde:
- El tiempo de espera es
min(((2^n)+random_number_milliseconds), maximum_backoff)
, conn
incrementado en 1 para cada iteración (solicitud). random_number_milliseconds
es un número aleatorio de milisegundos menor o igual que 1,000. Esto ayuda a evitar casos en los que muchos clientes se sincronizan por alguna situación y todos vuelven a intentarlo a la vez, lo que envía solicitudes en conjuntos sincronizados. El valor derandom_number_milliseconds
se vuelve a calcular después de cada solicitud de reintento.maximum_backoff
suele ser de 32 o 64 segundos. El valor apropiado depende del caso de uso.
El cliente puede seguir reintentando después de que alcanza el tiempo maximum_backoff
.
Después de este punto, los reintentos no necesitan continuar con el aumento del tiempo de retirada. Por ejemplo, si un cliente usa un tiempo maximum_backoff
de 64 segundos, luego de alcanzar este valor, el cliente puede volver a intentarlo cada 64 segundos. En algún momento, se debe impedir que los clientes vuelvan a intentarlo de forma indefinida.
El tiempo de espera entre los reintentos y la cantidad de reintentos depende del caso de uso y de las condiciones de la red.
Solicita un aumento de la cuota por proyecto
Según el uso que hagas de los recursos de tu proyecto, es posible que desees solicitar un aumento de la cuota. Se considera que las llamadas a la API realizadas por una cuenta de servicio usan una sola cuenta. Solicitar un aumento de cuota no garantiza la aprobación. Los incrementos de cuota grandes pueden tardar más tiempo en aprobarse.
No todos los proyectos tienen las mismas cuotas. A medida que tu uso de Google Cloud aumenta con el tiempo, es posible que debas aumentar tus cuotas. Si prevés un aumento considerable en el uso, puedes solicitar ajustes en la cuota de forma proactiva en la página Cuotas de la consola de Google Cloud.
Para obtener más información, consulta los siguientes recursos:
- Acerca de las solicitudes de aumento de cuota
- Consulta tu uso y los límites de la cuota actuales
- Solicita un límite de cuota más alto