Guía de inicio rápido de Django-Silk para análisis de rendimiento en Django

¿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_REQUESTS para 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.

Etiquetas: django-silk Django performance-profiling sql-queries web-development

Publicado el 7-2 02:43