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

register_application (Python API d'agent)

Syntaxe

newrelic.agent.register_application(name=None, timeout=None)

Enregistre immédiatement l'agent Python. Utilisé pour l'initialisation manuelle de l'agent.

Description

Lorsque initialize est appelé, il configure l'agent Python mais n'enregistre pas l'agent auprès du collecteur. Cet appel enregistre l'agent auprès du collecteur.

Ceci est principalement utilisé pour les transactions d'arrière-plan non Web instrumentées à l'aide de l' API. Lorsqu'il est utilisé avec une transaction non Web, appelez register_application dès que possible après l'appel initialize .

Pour les transactions Web, l' agent s'enregistre normalement automatiquement lorsque la première requête Web ou tâche d'arrière-plan se produit, l' agent reçoit sa configuration côté serveur du collecteur. Étant donné que l’enregistrement peut prendre une seconde environ, les détails des premières transactions sont généralement perdus. Vous pouvez collecter toutes ces données en forçant l'enregistrement avec register_application, bien que cela signifie que votre application peut attendre que l'enregistrement soit terminé avant de répondre à des requests Web ou d'exécuter des tâches en arrière-plan.

Si le script lui-même exécute le serveur WSGI, appelez register_application à partir du thread du programme principal dans le fichier de script principal. Si vous utilisez Apache/mod_wsgi ou uWSGI, effectuez l'appel à partir du fichier de script WSGI et placez l'appel immédiatement après initialize.

Cet appel renvoie l'objet d'application, de la même manière que application . L'objet est utilisé pour obtenir une référence à l'application agent-monitorer actuelle application et est utilisé par certains Python API agent appels d' de .

Évitez d'appeler pendant le verrouillage global de l'importation

N'appelez pas register_application avec un délai d'expiration différent de zéro lorsque le verrou d'importation global Python sera maintenu. En d’autres termes, ne l’appelez pas dans un fichier de module à portée globale pendant que le module est en cours d’importation. Cela peut entraîner un blocage temporaire avec le thread d’arrière-plan créé par cet appel (le blocage ne sera pas rompu tant que le délai d’attente n’aura pas expiré).

Notez que de nombreux serveurs WSGI importent le module contenant l'application WSGI via les mécanismes d'importation de module Python standard. Dans ces cas, le verrou d'importation global sera maintenu et le problème de blocage décrit ci-dessus peut se produire.

Pour Gunicorn : le problème de blocage qui vient d’être décrit peut également se produire lors de l’utilisation de Gunicorn. Le problème est que le déclenchement de register_application à partir du module WSGI n’est pas sûr, car il précharge le module dans le processus parent. Pour utiliser register_application avec Gunicorn (avec ou sans délai d'attente), appelez-le à partir d'un rappel post_fork() . Ce n'est pas un problème avec Apache/mod_wsgi, puisque ces outils ont été conçus pour ne pas faire cela, il est donc sûr de créer des threads d'arrière-plan lorsque l'application WSGI est chargée.

Appel après le fork du processus de travail

Si vous enregistrez des transactions dans un processus de travail enfant, n'appelez pas register_application dans le processus parent avant que les processus de travail enfants ne soient dupliqués. Si vous appelez register_application avant de forker, le thread de l'agent d'arrière-plan sera tué lorsque le processus sera forker. Étant donné que le thread parent signale des données au collecteur, l'agent ne pourra pas signaler de données à partir du processus de travail enfant.

Paramètres

paramètres

Description

name

chaîne

Facultatif. Le nom de l'application. Si défini, cela remplace le nom de l'application défini dans la configuration de l'agent Python.

timeout

int ou virgule flottante

Le nombre de secondes pendant lesquelles l'application tentera de s'enregistrer avant d'abandonner et d'envoyer une réponse ; ce qui signifie que cette ligne se bloquera jusqu'à ce que New Relic démarre ou que le délai d'attente soit dépassé. Une valeur de 0 signifie que l' application n'attendra pas l'enregistrement avant de traiter requests. La valeur par défaut est 0. Si vous exécutez une application Web, il n'est pas recommandé de définir cette valeur car elle bloquera et retardera l'application pendant le démarrage de New Relic. Si vous utilisez une seule exécution de programme ou une seule tâche, où le processus s'exécute une fois et se termine immédiatement, il est recommandé de définir cette option, car sinon New Relic ne démarrera pas à temps pour capturer les informations.

Cette valeur indique le nombre maximal de secondes pendant lesquelles l'appelant doit être bloqué avant que le contrôle ne soit rendu et que l'appelant soit autorisé à continuer. Sans valeur, l'appel utilise le paramètre startup_timeout configuré globalement dans la configuration de l'agent, qui est 0.0 par défaut.

Valeurs de retour

Renvoie un application objet qui peut être utilisé par Python API d'autresagent appels d' .

Exemples

Enregistrement d'une tâche en arrière-plan

Cet exemple enregistre une tâche d’arrière-plan non Web avec un délai d’expiration long. En règle générale, pour une application Web, vous disposez d'un délai d'expiration très court (la valeur par défaut est 0), mais vous pouvez définir un délai d'expiration plus long pour une tâche non Web peu fréquente afin de garantir que l'initialisation et l'enregistrement ont lieu.

import newrelic.agent
newrelic.agent.initialize('newrelic.ini')
newrelic.agent.register_application(timeout=10.0)
@newrelic.agent.background_task()
def main():
pass
if __name__ == '__main__':
main()
Droits d'auteur © 2025 New Relic Inc.

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