• /
  • EnglishEspañolFrançais日本語한국어Português
  • Se connecterDémarrer

Cette traduction automatique est fournie pour votre commodité.

En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.

Créer un problème

profile_trace (Python API d'agent)

Syntaxe

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

Utilisé pour instrumenter une fonction et les fonctions qu'elle contient jusqu'à une profondeur particulière pour les fonctions qui ne sont pas instrumentées par défaut.

Description

profile_trace est un décorateur permettant d'ajouter des fonctions. L'ajout de ce décorateur vous permet de collecter des informations de transaction supplémentaires (y compris des informations de trace de transaction).

Le décorateur profile_trace peut être utilisé sur les fonctions avec l'agent version 2.102.0.85 ou supérieure. Le chronométrage de ces objets commence lorsque la consommation débute, et se termine lorsque l'objet est épuisé ou sort de la portée.

Vous pouvez utiliser le décorateur en conjonction avec les décorateurs existants, y compris ceux pour les méthodes statiques et de classe. Lors de l'imbrication de plusieurs décorateurs, choisissez le décorateur profile_trace comme décorateur le plus externe.

Formes d'appel alternatives

Pour les configurations où vous ne pouvez pas utiliser le décorateur, ces formulaires d'appel alternatifs sont disponibles :

L'emballage

Si vous savez à l'avance où se trouvent les fonctions spécifiques que vous souhaitez trace, vous pouvez utiliser le décorateur profile_trace. Cependant, si vous don't connaissez toutes les fonctions qui doivent être tracées (par exemple, si elles sont recherchées dynamiquement dans le cadre d'un système de routage), vous devez alors utiliser ProfileTraceWrapper pour encapsuler la fonction au moment de l'enregistrement ou au moment de l'appel.

Enveloppement basé sur le chemin

wrap_profile_trace est utilisé pour encapsuler des fonctions en dehors du code dans lequel elles sont déclarées. Par exemple : vous pouvez l'utiliser pour instrumenter le code de la bibliothèque que vous ne souhaitez pas modifier.

Pour en savoir plus sur les différences entre ces formats d’appel, voir Différents formats d’appel.

Paramètres

paramètre pour le décorateur

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

Cet appel inclut ces paramètres :

paramètres

Description

name

chaîne ou fonction

Facultatif. Le nom de la fonction. Il peut s'agir d'une fonction qui accepte les mêmes paramètres que la fonction encapsulée. S'il n'est pas défini, la valeur par défaut est le nom capturé de la fonction.

group

chaîne ou fonction

Facultatif. Le group représente la structure de nommage pour le paramètre name . Ceci est utilisé dans l' UI pour séparer les types de transaction.

S'il n'est pas fourni, le groupe prendra la valeur Function par défaut en partant du principe que le nom est de la forme module:class.function ou module:function et représente le nom de la fonction en cours d'exécution. Si vous créez un groupe personnalisé, il est recommandé de le préfixer par Python/. Il peut s'agir d'une fonction qui accepte les mêmes paramètres que la fonction encapsulée.

label

chaîne ou fonction

Facultatif. Ajoute un indicateur de type légende au segment dans une trace de transaction. La valeur par défaut est None. Peut être une fonction qui accepte les mêmes paramètres que la fonction encapsulée.

params

dict ou fonction

Facultatif. Paramètres personnalisés à ajouter au segment dans les traces de transaction. Il peut s'agir d'une fonction qui accepte les mêmes paramètres que la fonction encapsulée.

depth

int

Facultatif. La valeur par défaut est 3. La profondeur de la stack à laquelle ajouter des segments dans la fonction.

Paramètres de l'enveloppe

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

Le paramètre du wrapper inclut tous les paramètres de profile_trace et un paramètre wrapped :

paramètres

Description

wrapped

fonction

Requis. La fonction en cours d'encapsulation.

name

chaîne ou fonction

Facultatif. Le nom de la fonction. Il peut s'agir d'une fonction qui accepte les mêmes paramètres que la fonction encapsulée. S'il n'est pas défini, la valeur par défaut est le nom capturé de la fonction.

group

chaîne ou fonction

Facultatif. Le group représente la structure de nommage pour le paramètre name . Ceci est utilisé dans l' UI pour séparer les types de transaction.

S'il n'est pas fourni, le groupe prendra la valeur Function par défaut en partant du principe que le nom est de la forme module:class.function ou module:function et représente le nom de la fonction en cours d'exécution. Si vous créez un groupe personnalisé, il est recommandé de le préfixer par Python/. Il peut s'agir d'une fonction qui accepte les mêmes paramètres que la fonction encapsulée.

label

chaîne ou fonction

Facultatif. Ajoute un indicateur de type légende au segment dans une trace de transaction. La valeur par défaut est None. Peut être une fonction qui accepte les mêmes paramètres que la fonction encapsulée.

params

dict ou fonction

Facultatif. Paramètres personnalisés à ajouter au segment dans les traces de transaction. Il peut s'agir d'une fonction qui accepte les mêmes paramètres que la fonction encapsulée.

depth

int

Facultatif. La valeur par défaut est 3. La profondeur de la stack à laquelle ajouter des segments dans la fonction.

Paramètre d'emballage basé sur le chemin

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

Le paramètre inclut tous les paramètres de profile_trace et ces paramètres :

paramètres

Description

module

objet

Requis. Le module contenant la fonction à instrumenter.

object_path

chaîne

Le chemin vers l'emplacement de la fonction.

Exemples

profile_trace

Un exemple d'utilisation du décorateur 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

Dans l'exemple ci-dessus, la trace de profil enveloppe une fonction récursive. Les traces de fonction seront ajoutées jusqu'à une profondeur de 7 appels de stack récursifs dans la fonction.

Exemple d'enveloppe

Un exemple d'utilisation du 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 vous souhaitez nommer la métrique d'après le nom du point de terminaison (plutôt que de nommer la métrique en fonction de l'identifiant de la fonction appelée), vous pouvez fournir le nom à utiliser ainsi qu'un préfixe de chemin de métrique alternatif lors de la création de l'objet 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 vous souhaitez nommer la métrique de manière dynamique (plutôt que de nommer la métrique à partir de l'identifiant de la fonction appelée), vous pouvez fournir le nom en tant que fonction lors de la création de l'objet 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)
Droits d'auteur © 2026 New Relic Inc.

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