Cómo controlar la limitación de velocidad

La limitación de tasa es una técnica común utilizada por los proveedores de API para administrar la cantidad de solicitudes que se pueden realizar a su servicio en un período de tiempo específico. Los proveedores de API utilizan la limitación de velocidad para garantizar que su servicio permanezca disponible y responda a todos los usuarios, y para evitar el abuso o el uso excesivo del servicio.

Cuando use API en la nube en su aplicación, debe comprender sus límites de frecuencia. Las siguientes técnicas pueden ayudarle a controlar la limitación de tasa en sus aplicaciones:

  • Comprende los límites de tasa. Consulte la documentación de la API que utiliza para comprender sus límites de tasa. Los límites de frecuencia pueden depender del proveedor de API o del plan de servicio que utilices. Por ejemplo, algunas API pueden tener límites de frecuencia diferentes para los planes gratuitos y de pago.
  • Utiliza la información sobre la limitación de tasa. Las API que usan límites de frecuencia normalmente comunican los límites actuales en los encabezados de respuesta. Por ejemplo, el RateLimit-Remaining encabezado indica el número de solicitudes que permanecen en la ventana actual. Si recibes una respuesta con este encabezado establecido en 0, sabrás que has alcanzado el límite de frecuencia y debes esperar a la siguiente ventana antes de enviar otra solicitud. El RateLimit-Reset encabezado indica la hora en que se restablece el límite de tasa. Los nombres y formatos de encabezado difieren por API: GitHub, por ejemplo, usa x-ratelimit-remaining y x-ratelimit-reset en segundos de época UTC. Algunas API envían los encabezados solo después de alcanzar un umbral. Un ejemplo es cuando le quedan 10% de las solicitudes.
  • Optimice el uso de la API. Algunos servicios asignan diferentes costos a diferentes solicitudes en función de su complejidad. Por ejemplo, algunas API pueden cobrar más por las solicitudes que devuelven más datos. Para reducir el costo de su aplicación, optimice el uso de su API obteniendo solo los datos que necesita. Utilice solicitudes por lotes si la API las admite. Le ayudan a reducir el número de recursos necesarios para procesar la respuesta y a mantenerse dentro de los límites de tasa.
  • Implemente un limitador de tasa local. Implemente un limitador de tasa dentro de la propia aplicación para limitar el número de solicitudes que se pueden realizar a la API en un período de tiempo específico. Puede hacerlo mediante el uso de técnicas como los algoritmos de depósito de tokens o de depósito con fugas, que permiten a la aplicación realizar muchas solicitudes por período de tiempo. Las solicitudes adicionales se ponen en cola o se descartan.
  • No supere los límites de solicitudes. Cuando superas los límites de tasa, la API limita tus solicitudes, normalmente con un código de estado HTTP 429 Too Many Requests. La ralentización afecta al rendimiento de tu aplicación más que la limitación de tasa. Utiliza la información de los encabezados de respuesta de limitación de tasa para mantenerte dentro de los límites y evitar la ralentización.

Mediante el uso de estas técnicas, puede crear aplicaciones que sean resistentes a la limitación de tasa y que puedan seguir funcionando incluso cuando la API esté sometida a una carga pesada. A continuación, comprueba que lo hacen, ya que rara vez se alcanza un límite de tasa durante el desarrollo.

Cómo probar tu administración de la limitación de tasa

Approach Lo que encuentras Lo que te pierdes
A la espera de la producción Límites de tasa reales Todo ello, hasta que un usuario lo alcance.
Simula la API en tus pruebas o deja que tu agente de programación escriba la simulación Si tu código lee los encabezados que has simulado Los nombres de encabezado, los formatos y el comportamiento de restablecimiento reales de la API, y la política de reintento de tu SDK. La aplicación también necesita una opción solo para pruebas para acceder al mock.
Llame a la API real hasta alcanzar el límite. Comportamiento real No puedes alcanzar el límite a voluntad, agotas tu cuota real y algunos límites solo se restablecen tras una hora
Interceptar el tráfico real de la aplicación y simular el límite Direcciones URL reales, un límite y una ventana de tiempo que elija y los encabezados propios de la API Tu código por sí solo. Deja eso para las pruebas unitarias.

Pruébalo en tu aplicación

Dev Proxy cuenta las solicitudes de la aplicación a las API que elijas, agrega encabezados de límite de velocidad a las respuestas y responde con 429 cuando la aplicación supera el límite, mientras que la aplicación sigue llamando a las direcciones URL reales. Tú eliges el límite y el intervalo de tiempo, por lo que puedes alcanzarlo en un minuto en lugar de en una hora.

Para GitHub, descargue la configuración preestablecida e inicie Dev Proxy con ella:

devproxy config get github-rate-limiting
devproxy --config-file "~dataFolder/configs/github-rate-limiting/.devproxy/devproxyrc.json"

Para las llamadas de Microsoft Graph a OneDrive y SharePoint (/drive, /shares, /sites), utiliza la configuración preestablecida microsoft-graph-rate-limiting. Para instalar Dev Proxy, consulte Configurar Dev Proxy.

Paso siguiente