Administrar las cuotas

La API de Calendario de Google tiene cuotas para garantizar que todos los usuarios la usen de forma justa. Hay tres limitaciones importantes que se deben tener en cuenta cuando se usa la API de Calendario:

  • Las cuotas de uso de la API se aplican por proyecto y por usuario. Consulta la siguiente sección para obtener más información.
  • Límites generales de uso del Calendario: Evita los límites de uso del Calendario.
  • Límites operativos: Es posible que se aplique un límite de frecuencia en cualquier momento. Por ejemplo, si intentas escribir en un solo calendario de forma consecutiva.

Tipos de cuotas de uso de la API de Calendar

Se aplican dos tipos de cuotas:

  • Por minuto por proyecto: Esta es la cantidad de solicitudes que realiza tu proyecto de Google Cloud.
  • Por minuto, por proyecto y por usuario: Esta es la cantidad de solicitudes que realiza un usuario en particular en tu proyecto de Cloud. El objetivo de este límite es ayudarte a garantizar una distribución justa del uso entre tus usuarios.

Las cuotas se calculan por minuto con una ventana deslizante, por lo que un aumento repentino de tráfico que supere tu cuota por minuto durante un minuto provocará un límite de frecuencia durante la siguiente ventana para garantizar que, en promedio, tu uso permanezca dentro de las cuotas.

Si se excede cualquiera de las cuotas, se aplica un límite de frecuencia y se muestra un código de estado 403 usageLimits o un código de estado 429 usageLimits en tus consultas. Si esto sucede, puedes hacer lo siguiente:

  1. Asegúrate de seguir todas las prácticas recomendadas: usa la retirada exponencial, aleatoriza los patrones de tráfico y usa notificaciones push.
  2. Si tu proyecto crece y tienes más usuarios, puedes solicitar un aumento de la cuota por proyecto.
  3. Si se alcanza el límite de cuota por usuario, puedes hacer lo siguiente:
    • Si usas una cuenta de servicio, asignala a los usuarios o divídela entre varias cuentas de servicio.
    • Si bien puedes solicitar un aumento en la cuota por usuario, en general, no se recomienda aumentarla por encima del valor predeterminado, ya que tu aplicación podría comenzar a alcanzar otros tipos de límites, por ejemplo, límites generales de uso del calendario o límites operativos.

Solicitud de aumento de cuota

Para consultar o cambiar los límites de uso de tu proyecto, o bien solicitar un aumento de la cuota, haz lo siguiente:

  1. Si no tienes una cuenta de facturación para tu proyecto, crea una.
  2. Visita la página de API habilitadas de la biblioteca de API en la Consola de APIs y selecciona una API de la lista.
  3. Si deseas consultar y cambiar la configuración de cuotas, selecciona la opción Cuotas. Para consultar las estadísticas de uso, selecciona la opción Uso.

Usa la retirada exponencial

Cuando queramos que disminuyas la frecuencia de solicitudes, mostraremos una respuesta 403 "usageLimits" o una respuesta 429 (consulta la documentación completa de errores). Este no es un error fatal y esperamos que vuelvas a intentar la solicitud después de un intervalo breve. Si las solicitudes siguen llegando demasiado rápido, volveremos a preguntar, y así sucesivamente. Para que esto funcione correctamente, es importante que los retrasos entre las solicitudes aumenten con el tiempo.

En general, debes usar una retirada exponencial truncada. La documentación de Cloud Storage explica cómo funciona y cuál es el algoritmo preferido. Si usas una biblioteca cliente de Google, por lo general, se controlará por ti. Consulta la documentación de tu biblioteca. Por lo general, debes usar la implementación de la biblioteca en lugar de escribir la tuya.

Aleatorizar los patrones de tráfico

Los clientes de Calendario son propensos a patrones de tráfico irregulares causados por varios clientes que realizan operaciones al mismo tiempo. Por ejemplo, una práctica inadecuada común para un cliente de Calendario es realizar una sincronización completa a la medianoche. Esto, casi con certeza, superaría tu cuota por minuto y provocaría un límite de frecuencia y una reducción.

Para evitar esto, asegúrate de que tu tráfico se distribuya durante el día siempre que sea posible. Si tu cliente necesita realizar una sincronización diaria, pídele que determine un horario aleatorio (diferente para cada cliente). Si necesitas realizar una operación con regularidad, varía el intervalo en un 25%. Esto distribuirá el tráfico de manera más uniforme y proporcionará una experiencia del usuario mucho mejor.

Cómo usar las notificaciones push

Un caso de uso común es querer realizar una acción cada vez que cambia algo en el calendario del usuario. Un antipatrón aquí es sondear de forma repetida todos los calendarios de interés. Esto agotará toda tu cuota con rapidez. Por ejemplo, si tu aplicación tiene 5,000 usuarios y sondea el calendario de cada usuario una vez cada minuto, esto requerirá una cuota por minuto de al menos 5,000 incluso antes de que se realice cualquier trabajo.

Las aplicaciones del servidor se pueden registrar para recibir notificaciones push, lo que nos permite informarte cuando ocurre algo interesante. Estas requieren más trabajo para su configuración, pero permiten un uso mucho más eficiente de tu cuota y proporcionan una mejor experiencia del usuario. Asegúrate de especificar el eventType para el que deseas recibir notificaciones. Para obtener más información, consulta Notificaciones push.

Contabilización adecuada con cuentas de servicio

Si tu aplicación realiza solicitudes con la delegación de todo el dominio, de forma predeterminada, la cuenta de servicio se cobra en función de las cuotas "por minuto por proyecto por usuario", y no del usuario al que suplantas. Esto significa que es probable que la cuenta de servicio se quede sin cuota y tenga un límite de frecuencia, aunque pueda estar operando en los calendarios de varios usuarios. Para evitar esto, usa el parámetro de URL quotaUser (o el encabezado HTTP x-goog-quota-user) para indicar a qué usuario se le cobrará. Esto se usa solo para los cálculos de cuota. Consulta Cómo limitar las solicitudes por usuario en la documentación de Cloud para obtener más información.

Prueba el manejo del límite de cuota

Para garantizar que tu aplicación pueda controlar de forma fluida el alcance de los límites de cuota en la práctica (p.ej., mediante reintentos con retirada exponencial) y minimizar cualquier posible inconveniente para tus usuarios, te recomendamos que pruebes esta situación en un entorno real.

Para que esa prueba no interfiera con el uso real de tu aplicación, te recomendamos registrar un proyecto independiente solo para pruebas en Consola de API de Google y configurarlo de una manera similar a tu proyecto de producción. Luego, puedes establecer cuotas bajas de forma artificial para este proyecto y observar el comportamiento de tu aplicación.

Precios

Todo uso de la API de Calendario de Google está disponible sin costo adicional. Si superas los límites de solicitudes de cuota, no se te cobrarán cargos adicionales y no se facturará tu cuenta.