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

Activer l'avertissement d'application (Python)

Problème

Important

Veuillez noter que ceci ne pose problème que si aucune donnée n’est signalée.

Vous utilisez la dernière version de l'agent Python et vous voyez une entrée log avec un message d'avertissement tel que :

Attempt to activate application in a process different to where the agent harvest thread was started.

OU:

Attempt to reactivate application or record transactions in a process different to where the agent was already registered.

L'application s'affiche sous forme de rapport dans l'UI de New Relic, mais aucune donnée n'est signalée à New Relic.

Solution

Pour résoudre ce problème avec votre application :

  1. Déplacez tous les appels vers newrelic.agent.register_application ou newrelic.agent.application à l'intérieur des fonctions à l'intérieur d'une vérification __name__ == __main__ .

  2. Si vous n'êtes pas sûr de l'endroit où se produisent les appels à newrelic.agent.register_application ou newrelic.agent.application , utilisez le log de débogage de l'agent pour rechercher une entrée contenant :

    newrelic.core.agent DEBUG - Application was activated from:
  3. Utilisez le traceback de l'entrée de l'appel qui a activé l'agent. Reportez-vous aux cadres suivants, qui sont considérés comme normaux :

    File "newrelic/api/transaction.py", line x, in __init__
    application.activate()
    File "newrelic/hooks/application_celery.py", line x, in process_initializer
    application_instance().activate()
  4. Si l'activation se produit à partir d'un emplacement différent, corrigez ce problème en suivant cet exemple :

    Avant:

    import newrelic.agent
    # This will cause the agent to activate whenever custom_event is imported
    app = newrelic.agent.application()
    def custom_event():
    newrelic.agent.record_custom_event('CustomEvent', {}, application=app)

    Après:

    import newrelic.agent
    def custom_event():
    app = newrelic.agent.application()
    newrelic.agent.record_custom_event('CustomEvent', {}, application=app)

Pour d’autres conseils lorsqu’aucune donnée n’apparaît, consultez la documentation de dépannage Python.

Cause

Il y a deux causes principales à ce problème. La première consiste à créer une instance d’application plusieurs fois ou à créer une instance d’application avant le fork.

  1. Cela est généralement dû à un appel à newrelic.agent.register_application ou newrelic.agent.application survenant au moment de l'importation.

    Example:

    import newrelic.agent
    # This will cause the agent to activate whenever custom_event is imported
    app = newrelic.agent.application()
    def custom_event():
    newrelic.agent.record_custom_event('CustomEvent', {}, application=app)
  2. Ce problème peut également se produire lors de monitoring de services tels que Celery, où un processus parent principal lance des processus de travail. Cela se produit lorsqu'une instance d'application d'agent est créée sur le processus principal avant de dupliquer les processus de travail. Étant donné que l'agent est lancé dans le processus parent, aucune donnée n'est collectée dans le processus enfant.

Droits d'auteur © 2025 New Relic Inc.

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