El generador de perfiles se incluye en las bibliotecas de rastreo de Datadog. Si ya estás utilizando APM para recopilar trazas (traces) para tu aplicación, puedes omitir la instalación de biblioteca e ir directamente a habilitar el generador de perfiles.
Si deseas controlar manualmente el ciclo de vida del generador de perfiles, utiliza el objeto ddtrace.profiling.Profiler:
fromddtrace.profilingimportProfilerprof=Profiler(env="prod",# si no se especifica, vuelve la variable de entorno DD_ENVservice="my-web-app",# si no se especifica, vuelve la variable de entorno DD_SERVICEversion="1.0.3",# si no se especifica, vuelve la variable de entorno DD_VERSION)prof.start()# Debe estar lo más antes posible, por ejemplo, antes de otras importaciones, para asegurar que todo se incluya en el perfil
Cuando tu proceso se bifurca con os.fork, el generador de perfiles debe iniciarse en
el proceso secundario. En Python 3.7+, esto se hace automáticamente. En Python < 3.7,
es necesario iniciar manualmente un nuevo generador de perfiles en tu proceso secundario:
# Para usuarios de ddtrace-run, llama a esto en tu proceso secundarioddtrace.profiling.auto.start_profiler()# Debe estar lo más antes posible, por ejemplo, antes de otras importaciones, para asegurar que todo se incluya en el perfil# Alternativamente, para la instrumentación manual,# crea un nuevo generador de perfiles en tu proceso secundario:fromddtrace.profilingimportProfilerprof=Profiler(...)prof.start()# Debe estar lo más antes posible, por ejemplo, antes de otras importaciones, para asegurar que todo se incluya en el perfil
El generador de perfiles de Python admite informes de procedencia del código, lo que permite
comprobar que la biblioteca está ejecutando el código. Aunque está
desactivado por defecto, se puede activar mediante la configuración de
DD_PROFILING_ENABLE_CODE_PROVENANCE=1.
La guía Empezando con el generador de perfiles toma un ejemplo de servicio con un problema de rendimiento y te muestra cómo utilizar Continuous Profiler para comprender y solucionar el problema.