• /
  • EnglishEspañolFrançais日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

Caso haja alguma divergência entre a versão em inglês e a traduzida, a versão em inglês prevalece. Acesse esta página para mais informações.

Criar um problema

profile_trace (API do agente Python)

Sintaxe

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

Usado para instrumentar uma função e as funções dentro dela até uma profundidade específica para funções que não são instrumentadas por padrão.

Descrição

profile_trace é um decorador para adicionar a funções. Adicionar este decorator permite coletar informações adicionais de transação (incluindo informações de trace da transação).

O decorador profile_trace pode ser usado em funções com a versão do agente 2.102.0.85 ou superior. A medição de tempo desses objetos começa quando o consumo é iniciado e termina quando o objeto é esgotado ou sai do escopo.

Você pode usar o decorador em conjunto com decoradores existentes, incluindo aqueles para métodos estáticos e de classe. Ao aninhar vários decoradores, tenha o decorador profile_trace como o decorador mais externo.

Formulários de chamada alternativos

Para configurações onde você não pode usar o decorador, estes formulários de chamada alternativos estão disponíveis:

O invólucro

Se você souber antecipadamente onde estão as funções específicas que deseja trace , poderá usar o decorador profile_trace. No entanto, se você don't conhece todas as funções que precisam ser rastreadas (por exemplo, se elas estão sendo pesquisadas dinamicamente como parte de um sistema de roteamento), então você deve usar o ProfileTraceWrapper para encapsular a função no no momento da inscrição ou no momento da ligação.

Quebra automática baseada em caminho

wrap_profile_trace é usado para agrupar funções fora do código em que foram declaradas. Por exemplo: você pode usar isso para o código da biblioteca do instrumento que não deseja modificar.

Para obter mais informações sobre as diferenças entre esses formatos de chamada, consulte Diferentes formatos de chamada.

Parâmetro

Parâmetro para decorador

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

Esta chamada inclui estes parâmetros:

Parâmetro

Descrição

name

string ou função

Opcional. O nome da função. Pode ser uma função que aceita os mesmos parâmetros que a função que está sendo encapsulada. Se não for definido, o padrão é o nome capturado da função.

group

string ou função

Opcional. O group representa a estrutura de nomenclatura do parâmetro name . Isto é usado na interface para segregar os tipos de transação.

Se não for fornecido, o grupo assumirá Function como padrão na expectativa de que o nome tenha o formato module:class.function ou module:function e represente o nome da função em execução. Se você estiver criando um grupo personalizado, é recomendável prefixá-lo com Python/. Pode ser uma função que aceita os mesmos parâmetros que a função sendo encapsulada.

label

string ou função

Opcional. Adiciona um sinalizador no estilo de destaque ao segmento em um trace da transação. O padrão é None. Pode ser uma função que aceita os mesmos parâmetros que a função que está sendo encapsulada.

params

dict ou função

Opcional. Parâmetros personalizados para adicionar ao segmento nos traces da transação. Pode ser uma função que aceita os mesmos parâmetros que a função que está sendo encapsulada.

depth

int

Opcional. O padrão é 3. A profundidade da stack para adicionar segmentos dentro da função.

Parâmetro do wrapper

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

Os parâmetros do wrapper incluem todos os parâmetros para profile_trace e um parâmetro wrapped :

Parâmetro

Descrição

wrapped

função

Obrigatório. A função que está sendo encapsulada.

name

string ou função

Opcional. O nome da função. Pode ser uma função que aceita os mesmos parâmetros que a função que está sendo encapsulada. Se não for definido, o padrão é o nome capturado da função.

group

string ou função

Opcional. O group representa a estrutura de nomenclatura do parâmetro name . Isto é usado na interface para segregar os tipos de transação.

Se não for fornecido, o grupo assumirá Function como padrão na expectativa de que o nome tenha o formato module:class.function ou module:function e represente o nome da função em execução. Se você estiver criando um grupo personalizado, é recomendável prefixá-lo com Python/. Pode ser uma função que aceita os mesmos parâmetros que a função sendo encapsulada.

label

string ou função

Opcional. Adiciona um sinalizador no estilo de destaque ao segmento em um trace da transação. O padrão é None. Pode ser uma função que aceita os mesmos parâmetros que a função que está sendo encapsulada.

params

dict ou função

Opcional. Parâmetros personalizados para adicionar ao segmento nos traces da transação. Pode ser uma função que aceita os mesmos parâmetros que a função que está sendo encapsulada.

depth

int

Opcional. O padrão é 3. A profundidade da stack para adicionar segmentos dentro da função.

Parâmetro de encapsulamento baseado em caminho

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

parâmetro inclui todos os parâmetros para profile_trace e estes parâmetros:

Parâmetro

Descrição

module

objeto

Obrigatório. O módulo que contém a função a ser instrumentada.

object_path

corda

O caminho para o local da função.

Exemplos

profile_trace

Um exemplo de uso do 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

No exemplo acima, o trace de perfil envolve uma função recursiva. Os traces de função serão adicionados até 7 chamadas recursivas de stack de profundidade na função.

Exemplo de wrapper

Um exemplo de uso do 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)

Se desejar nomear a métrica após o nome do endpoint (em vez de nomear a métrica com base no identificador da função que está sendo chamada), você poderá fornecer o nome a ser usado, além de um prefixo de caminho de métrica alternativo quando o objeto ProfileTraceWrapper for criado.

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)

Se você quiser nomear a métrica dinamicamente (em vez de nomear a métrica com base no identificador da função que está sendo chamada), você pode fornecer o nome como uma função quando o objeto ProfileTraceWrapper é criado.

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.