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 manera justa y para proteger el rendimiento general de Google Workspace.
Si excedes una cuota, recibirás una respuesta con el código de estado HTTP 429: Too many requests. Las verificaciones adicionales de límites 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 retirada exponencial
y volver a intentarlo más tarde. Siempre que te mantengas dentro de las cuotas por minuto que se indican en las siguientes tablas, no habrá límite para la cantidad de solicitudes que puedes realizar por día.
Se pueden aplicar varios tipos de cuotas a los métodos de la API de Chat: cuotas por proyecto, por espacio y por usuario.
Cuotas por proyecto
Las cuotas por proyecto limitan la frecuencia de las consultas para un proyecto de Google Cloud y, por lo tanto, se aplican a una sola app de Chat que llama a los métodos especificados de la API de Chat 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) |
|---|---|---|
Operaciones de escritura de mensajes por minuto |
|
3000 |
Operaciones de lectura de mensajes por minuto |
|
3000 |
Operaciones de escritura de membresías por minuto |
|
300 |
Operaciones de lectura de membresías por minuto |
|
3000 |
Operaciones de escritura de espacios por minuto |
|
60 |
Operaciones de lectura de espacios 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 |
Operaciones de escritura de CustomEmoji por minuto |
|
600 |
Operaciones de lectura de CustomEmoji por minuto |
|
3000 |
Operaciones de escritura de secciones por minuto |
|
600 |
Operaciones de lectura de secciones por minuto |
|
3000 |
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 que llaman a los métodos de la API de Chat enumerados para cada cuota.
En la siguiente tabla, se detallan los límites de consultas por espacio:
Cuota por espacio |
Métodos de la API de Chat |
Límite (por segundo) |
|---|---|---|
Operaciones de lectura por segundo |
|
15 |
Operaciones de escritura por segundo |
|
1 |
Operaciones de escritura de creación de reacciones por segundo |
|
5 |
Operaciones de escritura de mensajes por segundo mientras se importan datos a Google Chat |
|
10 |
Cuotas por usuario
Las cuotas por usuario limitan la frecuencia de las consultas para un usuario de Google Chat. Las consultas pertenecen a todas las apps de Chat que llaman a un método de la API de Chat en nombre de un usuario (con la autenticación del usuario).
En la siguiente tabla, se detallan los límites de consultas por usuario:
Cuota por usuario |
Métodos de la API de Chat |
Límite (por segundo) |
|---|---|---|
Operaciones de escritura de CustomEmoji por segundo |
|
1 |
Operaciones de lectura de CustomEmoji por segundo |
|
15 |
Operaciones de escritura de secciones por segundo |
|
1 |
Operaciones de lectura de secciones por segundo |
|
15 |
Límites de uso adicionales
El tráfico alto de la API que se dirige al mismo espacio puede activar límites internos adicionales que no son visibles en la página Cuotas.
Cómo resolver errores de cuota basados en el tiempo
Para todos los errores basados en el tiempo (máximo de N solicitudes por X minutos), te recomendamos que tu código detecte la excepción y use una retirada exponencial truncada para asegurarte de que tus 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 reintenta 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 los retrasos entre las solicitudes aumenten con el tiempo hasta que la solicitud se realice 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_millisecondsy vuelve a intentar la solicitud. - Si la solicitud falla, espera 2 +
random_number_millisecondsy vuelve a intentar la solicitud. - Si la solicitud falla, espera 4 +
random_number_millisecondsy vuelve a intentar la solicitud. - Y así sucesivamente, hasta un tiempo de
maximum_backoff. - Sigue esperando y reintentando hasta una cantidad máxima 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), connincrementado en 1 para cada iteración (solicitud). random_number_millisecondses un número aleatorio de milisegundos menor o igual a 1,000. Esto ayuda a evitar los casos en los que muchos clientes se sincronizan por alguna situación y todos realizan el reintento a la vez, lo que hace que se envíen solicitudes sincronizadas en etapas. El valor derandom_number_millisecondsse vuelve a calcular después de cada reintento de solicitud.maximum_backoffsuele ser de 32 o 64 segundos. El valor apropiado depende del caso de uso.
El cliente puede seguir reintentando después de alcanzar el tiempo de 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 de maximum_backoff de 64 segundos, después de alcanzar
este valor, el cliente puede volver a intentarlo cada 64 segundos. En algún momento,
se debe evitar que los clientes vuelvan a intentarlo de forma indefinida.
El tiempo de espera entre los reintentos y la cantidad de reintentos depende del caso práctico y 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 ajuste de cuota Las llamadas a la API de una cuenta de servicio se consideran como si usaran una sola cuenta. Solicitar una cuota ajustada no garantiza la aprobación. Las solicitudes de ajuste de cuota que aumentarían significativamente el valor de la cuota pueden tardar más 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 los valores de 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 los ajustes de cuota
- Consulta el uso y los límites de cuota actuales
- Solicita un límite de cuota más alto