• /
  • 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

background_task (Python API d'agent)

Syntaxe

newrelic.agent.background_task(application=None, name=None, group=None)

Utilisé pour instrumenter une tâche d'arrière-plan ou une autre transaction non Web à temps d'exécution finis.

Description

Ce décorateur Python peut être utilisé pour instrumenter des tâches d'arrière-plan ou d'autres transactions non web à temps d'exécution finis. Ceci est généralement utilisé pour instrumenter des activités non Web telles que les processus de travail, les systèmes basés sur les tâches et les scripts autonomes. Les transactions marquées comme tâches d'arrière-plan sont affichées en tant que transactions non Web dans l'UI APM et séparées des transactions Web.

Important

Si une fonction n'est pas déjà instrumentée, vous pouvez utiliser function_trace() pour créer une trace de fonction pour cette fonction dans une tâche en arrière-plan. Ou vous pouvez utiliser le fichier de configuration pour instrumenter des fonctions non instrumentées.

Si une fonction utilisant le décorateur de tâche d'arrière-plan est appelée dans le contexte d'un Web de transaction, alors le Web de transaction est marqué comme une tâche d'arrière-plan. La mesure du temps pris commence au démarrage de la transaction Web d'origine.

Si vous ne pouvez pas utiliser le décorateur, l’un de ces formats d’appel peut être plus utile :

  • The context manager: Si les tâches à monitorer ne sont déterminées qu'au moment de l'exécution (et non au moment de l'importation), vous pouvez utiliser le gestionnaire de contexte BackgroundTask pour encapsuler directement l'exécution d'un bloc de code. (Il s'agit du gestionnaire de contexte utilisé par BackgroundTaskWrapper.)
  • The wrapper:Si vous savez à l'avance où se trouvent les fonctions spécifiques que vous souhaitez suivre, vous pouvez utiliser le décorateur background_task . Mais si vous ne connaissez pas 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 BackgroundTaskWrapper pour encapsuler la fonction au moment de l'enregistrement ou au moment de l'appel.
  • The path-based wrapper: La forme wrapper basée sur le chemin est wrap_background_task.

Pour en savoir plus sur les différences et les utilisations de ces formes de fonctions, consultez Formats d'appel de variables.

Paramètres

Décorateur et gestionnaire de contexte paramètre

newrelic.agent.background_task(application=None, name=None, group=None)
newrelic.agent.BackgroundTask(application=None, name=None, group=None)

paramètre pour ces appels :

paramètres

Description

application

instanced'application

Requis. L'application sous laquelle les données seront signalées. La valeur par défaut est None. Si aucune valeur n'est définie, l'application spécifiée dans la configuration de l'agent (fichier de configuration ou variable d'environnement) sera utilisée.

Pour en savoir plus sur la génération d’un objet d’application, consultez la méthode application() .

L'application, même si elle est spécifiée, peut toujours être remplacée si newrelic.app_name est défini dans le dictionnaire d'environnement de l'application WSGI par demande.

name

chaîne

Requis. Le nom de la transaction. La valeur par défaut est None. Par défaut, le nom sera le nom de la fonction à laquelle le décorateur a été appliqué, mais vous pouvez le remplacer en fournissant ce nom.

group

chaîne

Facultatif. Le group représente la structure de nommage pour le paramètre name . Ceci est utilisé dans l' UI pour définir le type de transaction.

Si ce paramètre n'est pas fourni, le groupe prend par défaut la valeur Function dans l'attente que le nom soit 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é, nous vous recommandons de le préfixer avec Python/.

Paramètre de l'enveloppe :

newrelic.agent.BackgroundTaskWrapper(wrapped, application=None, name=None, group=None)

BackgroundTaskWrapper prend le même paramètre que le décorateur background_task et ce paramètre wrapped supplémentaire :

paramètres

Description

wrapped

méthode

Requis. La méthode à tracer.

Paramètre basé sur le chemin :

newrelic.agent.wrap_background_task(module, object_path, application=None, name=None, group=None)

wrap_background_task prend le même paramètre que le décorateur background_task plus ces paramètres supplémentaires :

paramètres

Description

module

module ou chaîne

Requis. Le module contenant la fonction/activité non Web pour laquelle vous êtes instrumenté.

object_path

chaîne

Requis. Le chemin vers le module.

Exemples

background_task

Voici un exemple d'utilisation du décorateur background_task :

@newrelic.agent.background_task()
def task():
...

BackgroundTask

Un exemple d'utilisation de BackgroundTask:

application = newrelic.agent.application()
name = newrelic.agent.callable_name(task)
with BackgroundTask(application, name):
task()

Voici un autre exemple avec plus de paramètres :

application = newrelic.agent.register_application(timeout=10.0)
def execute_task(task_name):
with newrelic.agent.BackgroundTask(application, name=task_name, group='Task'):
...

BackgroundTaskWrapper

Un exemple d'utilisation du BackgroundTaskWrapper:

task = newrelic.agent.BackgroundTaskWrapper(get_next_task())
result = task(*args, **kwargs)

Dans cet exemple, si cet appel a été effectué dans un Web de transactions monitoré par un agent, l'appel reclassera le Web de transactions comme une tâche d'arrière-plan. Toutefois, si l'appel a été effectué dans un thread d'arrière-plan ou une coroutine, il démarrerait l'enregistrement d'une nouvelle transaction de tâche d'arrière-plan qui suit ce qui se passe jusqu'au retour de l'appel.

Dépannage

Si la transaction de la tâche en arrière-plan n'apparaît pas dans l' UI, cela peut être dû au fait que la transaction créée par la tâche en arrière-plan n'a jamais été quittée ou que la tâche a été exécutée trop longtemps. Si une tâche en arrière-plan s'exécute pendant plus de 20 minutes, elle est abandonnée par le serveur car elle est considérée comme trop ancienne pour être conservée. Les tâches en arrière-plan ne doivent pas s'exécuter pendant plus de 20 minutes et, si c'est le cas, elles doivent être divisées en plusieurs tâches en arrière-plan.

Droits d'auteur © 2025 New Relic Inc.

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