No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Limitación de Solicitudes en Django REST: Estrategias y Configuración

21/21
Recursos

Limitar las solicitudes a una API es fundamental para evitar abusos y proteger los recursos del servidor. El throttling es una técnica clave en este proceso, ya que permite controlar la cantidad de solicitudes que diferentes usuarios pueden hacer en un determinado periodo, previniendo ataques como DDoS y optimizando el rendimiento.

¿Cómo implementar throttling en Django REST?

Para controlar las solicitudes en Django REST, es importante definir reglas específicas. Estas reglas pueden basarse en el estado del usuario, como si está autenticado o es anónimo, o incluso establecer limitaciones distintas para usuarios VIP.

  • Primero, debemos entender que el throttling se configura de manera similar a los permisos y autenticación.
  • Definimos límites como “requests por minuto”, y estos valores pueden ser diferentes para usuarios anónimos o autenticados.

¿Cómo definir reglas de throttling en Django REST?

La documentación de Django REST proporciona ejemplos claros para limitar las solicitudes de acuerdo al tipo de usuario:

  • Para usuarios anónimos: 100 solicitudes por día.
  • Para usuarios autenticados: 1000 solicitudes por día.

Estas reglas pueden configurarse fácilmente para ser más estrictas, limitando, por ejemplo, a 5 solicitudes por minuto para usuarios anónimos.

¿Cómo probar la configuración?

  1. Modificar la configuración: Añade las reglas de throttling al diccionario de configuración de Django REST. Para limitar a 5 solicitudes por minuto, establece la tasa en 'minute': 5 para usuarios anónimos.
  2. Ejecutar el servidor: Después de realizar los cambios, corre el servidor de desarrollo y prueba enviando solicitudes repetidas.
  3. Verificación en la terminal: Al alcanzar el límite de solicitudes, Django REST mostrará el error “too many requests” en la terminal, indicando que el sistema de throttling está funcionando correctamente.

¿Qué sucede cuando el límite es alcanzado?

Si un usuario anónimo intenta hacer más de 5 solicitudes en un minuto, verá un error que le informará que ha alcanzado el límite de solicitudes permitidas. Después de esperar unos segundos, el sistema volverá a permitir solicitudes. Este proceso asegura que los recursos del servidor no se saturen con solicitudes abusivas o incorrectas.

Aportes 6

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

🟢 **Qué es el Throttling** El throttling es una técnica utilizada en aplicaciones web, especialmente en APIs, para **controlar la cantidad de solicitudes** que un cliente puede hacer en un período de tiempo específico. Su objetivo principal es prevenir abusos, proteger recursos y garantizar un rendimiento óptimo. De manera visual, un throttle consiste en bloquear la invocación de funciones hasta que se **complete un tiempo determinado o una acción en específico**. De esta manera reducimos el número de peticiones a la API. Lo que conlleva reducir costos y prevenir ataques. ![](https://static.platzi.com/media/user_upload/image-9f2aa082-9c72-4125-9d9e-0c7e22fd6617.jpg) Un concepto similar es **Debounce.** Pero te lo dejo de tarea. Espero haberte ayudado. **¡Nunca pares de aprender!** 🚀🚀
Si llegaste hasta acá estás listo para crear una API con Django Rest. Si tienes dudas no dudes en dejarlas en el sistema de comentarios o contactarme directamente.
Fundamental para evitar el ataque DoS y evitar lo que sucede en el primer capítulo de "Mr. Robot". Acá dejo una explicación un poco más elaborada: ### ¿Por qué es importante el Throttling? El **throttling** se utiliza para evitar que un solo cliente (ya sea intencional o accidentalmente) consuma recursos de la API de manera excesiva o perjudique a otros usuarios. También es útil en escenarios donde se necesita aplicar políticas de uso, como limitar a un cliente a realizar solo un número determinado de solicitudes por minuto o día. ### Tipos de Throttling en DRF DRF ofrece varios tipos de **throttling** que puedes aplicar a nivel global o por vista: 1. **AnonRateThrottle**: * Limita la cantidad de solicitudes que pueden hacer los **usuarios no autenticados**. 2. **UserRateThrottle**: * Limita la cantidad de solicitudes que pueden hacer los **usuarios autenticados**. 3. **ScopedRateThrottle**: * Aplica una limitación de solicitudes a un conjunto de vistas específicas usando un nombre de "alcance" (scope). Es útil para diferentes partes de la API que requieren diferentes limitaciones de uso. 4. **Custom Throttle**: * Puedes crear tus propios **throttles personalizados** si necesitas lógica específica para gestionar la tasa de solicitudes.
Genial curso. He aprendido mucho en estas clases. Les dejo el link de mi repo, <https://github.com/juliosarango/doctor_app>
Gracias profe, ha sido un curso excelente!
Esta muy bueno, tenia mucha curiosidad sobre como convertir una app de django en una api, si tuvieran que comparar django rest framework con fastapi, ¿cual elegirían? siento que fastapi es mas cómodo para hacer las apis, pero django también es cómodo para la parte frontend.