¿Qué es Django-Silk?
Django-Silk es una herramienta de perfilado para aplicaciones Django que intercepta y registra solicitudes HTTP y consultas a bases de datos. Ofrece una interfaz web para visualizar métricas de rendimiento, como tiempos de ejecución y detalles de consultas SQL, ayudando a identificar cuellos de botella.
Instalación
Para instalar Django-Silk, se puede usar pip en un entorno virtual. Ejecute el siguiente comando para obtener la versión estable:
pip install django-silk
Si se desea incluir autoformateo de código con autopep8, instale la variante con soporte de formato:
pip install django-silk[formatting]
Configuración del proyecto Django
1. Añadir middleware y aplicación
Modifique el archivo settings.py para incluir el middlewaer de Silk y la aplicación. El middleware debe colocarse al final de la lista para mediciones precisas:
MIDDLEWARE = [
# Otros middlewares...
'silk.middleware.SilkyMiddleware', # Colocar al final para capturar todo el proceso
]
INSTALLED_APPS = [
# Otras aplicaciones...
'silk.apps.SilkAppConfig' # Registrar la app de Silk
]
2. Configurar rutas URL
En el archivo urls.py, añada las URLs de Silk usando un prefijo único para evitar conflictos:
urlpatterns += [path('silk/', include('silk.urls', namespace='silk'))]
3. Ejecutar migraciones
Silk crea tablas en la base de datos para almacenar datos de perfilado. Aplique las migraciones con:
python manage.py migrate
Uso de Django-Silk
Tras la configuración, inicie el servidor de desarrollo. Silk registrará automáticamente las solicitudes. Acceda a /silk/ para explorar la interfaz de perfilado.
Funcionalidades clave:
- Listado de solicitudes HTTP con códigos de estado y tiempos de respuesta.
- Detalle de solicitudes individuales, incluyendo el stack de llamadas.
- Análisis de consultas SQL ejecuatdas y su duración.
- Detección de consultas lentas y problemas de rendimiento.
Recomendaciones avanzadas
- En entornos de producción, configure filtros para evitar registrar todas las solicitudes y minimizar el impacto.
- Establezca limpiezas periódicas de datos o use configuraciones como
SILKY_MAX_RECORDED_REQUESTSpara controlar el volumen. - En sitios con alto tráfico, ajuste la tasa de muestreo para registrar solo un porcentaje de solicitudes.
- Asegure la privacidad configurando reglas para filtrar datos sesnibles en las solicitudes.
Preguntas frecuentes
¿Afecta Silk al rendimiento? En desarrollo, el impacto es mínimo; en producción, use muestreo o habilítelo solo para rutas específicas.
¿Cómo limito la cantidad de datos? Ajuste opciones en settings.py, como SILKY_MAX_RECORDED_REQUESTS.
¿Dónde se almacenan los datos? Por defecto, en la base de datos del proyecto, pero se puede configurar una base separada.