• /
  • EnglishEspañolFrançais日本語한국어Português
  • Inicia sesiónComenzar ahora

Te ofrecemos esta traducción automática para facilitar la lectura.

En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.

Crea una propuesta

profile_trace (API del agente Python)

Sintaxis

newrelic.agent.profile_trace(name=None, group=None, label=None, params=None, terminal=False)

Se utiliza para instrumentar una función y las funciones dentro de ella a una profundidad específica para funciones que no están instrumentadas por defecto.

Descripción

profile_trace es un decorador para agregar a funciones. Agregar este decorador le permite recopilar información adicional de la transacción (incluida la información de la traza de la transacción).

El decorador profile_trace se puede usar en funciones con la versión del agente 2.102.0.85 o superior. La medición del tiempo de estos objetos comienza cuando se inicia el consumo, y termina cuando el objeto se agota o sale del ámbito.

Puede utilizar el decorador junto con decoradores existentes, incluidos los de métodos estáticos y de clase. Al anidar varios decoradores, tenga el decorador profile_trace como el decorador más externo.

Formularios de llamada alternativos

Para configuraciones en las que no puede utilizar el decorador, estos formularios de llamada alternativos están disponibles:

The wrapper

Si sabes de antemano dónde están las funciones específicas que deseas trazar, puedes usar el decorador profile_trace . Sin embargo, si don't conoce todas las funciones que deben trazarse (por ejemplo, si se buscan dinámicamente como parte de un sistema de enrutamiento), entonces debe usar ProfileTraceWrapper para ajustar la función en el en el momento de la inscripción o en el momento de la convocatoria.

Envoltura basada en rutas

wrap_profile_trace se utiliza para encapsular funciones fuera del código en el que están declaradas. Por ejemplo: podrías usar esto para instrumentar el código de la biblioteca que no deseas modificar.

Para obtener más información sobre las diferencias entre estos formatos de llamadas, consulte Diferentes formatos de llamadas.

Parámetros

Parámetro para decorador

newrelic.agent.profile_trace(name=None, group=None, label=None, params=None, depth=3)

Esta convocatoria incluye estos parámetros:

Parámetro

Descripción

name

cadena o función

Opcional. El nombre de la función. Podría ser una función que acepta los mismos parámetros que la función envuelta. Si no se establece, el valor predeterminado es el nombre capturado de la función.

group

cadena o función

Opcional. El group representa la estructura de nombres para el parámetro name . Esto se utiliza en la UI para segregar los tipos de transacciones.

Si no se proporciona, el grupo se establecerá de forma predeterminada en Function con la expectativa de que el nombre tenga el formato module:class.function o module:function y represente el nombre de la función en ejecución. Si está creando un grupo personalizado, se recomienda agregarle el prefijo Python/. Podría ser una función que acepte los mismos parámetros que la función que se está envolviendo.

label

cadena o función

Opcional. Agrega un indicador de estilo de llamada al segmento en una traza de la transacción. El valor predeterminado es None. Podría ser una función que acepte los mismos parámetros que la función que se está envolviendo.

params

dict o función

Opcional. Parámetros personalizados para agregar al segmento en las trazas de la transacción. Podría ser una función que acepte los mismos parámetros que la función que se está envolviendo.

depth

En t

Opcional. El valor predeterminado es 3. La profundidad del stack a la que se agregan segmentos dentro de la función.

Parámetro de envoltura

newrelic.agent.ProfileTraceWrapper(wrapped, name=None, group=None, label=None, params=None)

Los parámetros para el contenedor incluyen todos los parámetros para profile_trace y un parámetro wrapped :

Parámetro

Descripción

wrapped

función

Requerido. La función que se está envolviendo.

name

cadena o función

Opcional. El nombre de la función. Podría ser una función que acepta los mismos parámetros que la función envuelta. Si no se establece, el valor predeterminado es el nombre capturado de la función.

group

cadena o función

Opcional. El group representa la estructura de nombres para el parámetro name . Esto se utiliza en la UI para segregar los tipos de transacciones.

Si no se proporciona, el grupo se establecerá de forma predeterminada en Function con la expectativa de que el nombre tenga el formato module:class.function o module:function y represente el nombre de la función en ejecución. Si está creando un grupo personalizado, se recomienda agregarle el prefijo Python/. Podría ser una función que acepte los mismos parámetros que la función que se está envolviendo.

label

cadena o función

Opcional. Agrega un indicador de estilo de llamada al segmento en una traza de la transacción. El valor predeterminado es None. Podría ser una función que acepte los mismos parámetros que la función que se está envolviendo.

params

dict o función

Opcional. Parámetros personalizados para agregar al segmento en las trazas de la transacción. Podría ser una función que acepte los mismos parámetros que la función que se está envolviendo.

depth

En t

Opcional. El valor predeterminado es 3. La profundidad del stack a la que se agregan segmentos dentro de la función.

Parámetro de ajuste basado en ruta

newrelic.agent.wrap_profile_trace(module, object_path, name=None, group=None, label=None, params=None, depth=3)

El parámetro incluye todos los parámetros para profile_trace y estos parámetros:

Parámetro

Descripción

module

objeto

Requerido. El módulo que contiene la función a instrumentar.

object_path

cadena

La ruta a la ubicación de la función.

Ejemplos

profile_trace

Un ejemplo de uso del decorador profile_trace :

import newrelic.agent
@newrelic.agent.profile_trace(depth=7)
def find_node(tree, value):
if tree.value == value:
return tree
for node in tree.children:
found_node = find_node(node, value)
if found_node:
return found_node

En el ejemplo anterior, la traza de perfil envuelve a una función recursiva. Las trazas de función se agregarán hasta una profundidad de 7 llamadas recursivas de stack dentro de la función.

Ejemplo de contenedor

Un ejemplo de uso de ProfileTraceWrapper:

import newrelic.agent
def find_node(tree, value):
if tree.value == value:
return tree
for node in tree.children:
found_node = find_node(node, value)
if found_node:
return found_node
find_node = newrelic.agent.ProfileTraceWrapper(find_node, depth=7)

Si desea nombrar la métrica después del nombre del extremo (en lugar de nombrar la métrica según el identificador de la función que se llama), puede proporcionar el nombre que se usará más un prefijo de ruta de métrica alternativo cuando se cree el objeto ProfileTraceWrapper .

import newrelic.agent
def find_node(tree, value):
if tree.value == value:
return tree
for node in tree.children:
found_node = find_node(node, value)
if found_node:
return found_node
find_node = newrelic.agent.ProfileTraceWrapper(find_node, name="find_node", group="Python/Profile", depth=7)

Si desea nombrar la métrica dinámicamente (en lugar de nombrar la métrica en función del identificador de la función que se está llamando), puede proporcionar el nombre como una función cuando se crea el objeto ProfileTraceWrapper.

import newrelic.agent
def find_node(tree, value):
if tree.value == value:
return tree
for node in tree.children:
found_node = find_node(node, value)
if found_node:
return found_node
find_node = newrelic.agent.ProfileTraceWrapper(find_node, name=lambda tree, value: f"find_node_{value}", depth=7)
Copyright © 2026 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.